字符串>使用hibernate进行4000到CLOB的转换

时间:2009-09-17 16:29:00

标签: java hibernate grails clob

我有一个java类将字符串(> 4k)保存到数据库表中的CLOB字段中。 如果字符串小于4k,则可以正常工作。

我使用@Lob对字段进行了注释,最初由于不支持流的批处理而得到异常,所以我在Hibernate配置中使批量大小为0,这给出了例外:

引起:java.sql.SQLException:ORA-01460:请求未实现或不合理的转换

  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
  at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
  at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
  at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
  at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1144)
  at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2152)
  at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2035)
  at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2876)
  at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
  at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23)
  at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2062)
  ... 36 more

使用Grails中的代码时,我只会遇到此问题。当我使用纯Java应用程序中的相同代码时,我不会遇到问题。两个应用程序都具有相同的hibernate配置(除了我需要在Grails中将批处理大小设置为0)。问题是Hibernate版本的差异,就我所见,Grails中的3.2.6ga和java应用程序的3.2.5ga。在这两种情况下,Oracle驱动程序都是相同的。

欢迎任何答案。

1 个答案:

答案 0 :(得分:1)

尝试使用@Column(length = Integer.MAX_VALUE)注释字段。这hibernate bug report提及它在德比中有所帮助。