【发布时间】:2010-07-05 08:33:47
【问题描述】:
有没有人听说过这个错误:
我有一个 Java 5 应用程序,它使用 Hibernate 3.3.2 访问 Oracle 数据库 10g,JDBC 驱动程序是 Oracle 轻驱动程序版本 10.2.0.4.0(我认为是最新版本)。 数据库访问发生在通过 spring 的 AOP 工具管理的事务期间。 有一个数据库表映射到一个 Java 实体,映射是通过注解完成的。此实体中有两个属性是数据库中的 CLOB。它们根据 JPA 使用“Lob”进行注释,并且是 Java 字符串。一切正常,除非两个属性的值都超过 4000 个字符:提交后,值在数据库上被切换,即属性 A 包含属性 B 的值,反之亦然。
这不是玩笑!
Eclipse 调试器告诉我 Java 实体具有正确的值,直到事务关闭(我没有调试到 Spring 事务处理)。 如果两个 Clob 都使用 Hibernate 注释 'Type(type = "clob")' 进行注释,则不会发生此错误(在这种情况下,它们必须是 java.sql.Clob 类型而不是 String,当然)。
【问题讨论】: