我有一个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驱动程序都是相同的。
欢迎任何答案。