gpt4 book ai didi

java - 使用 hibernate 将字符串 > 4000 转换为 CLOB

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:49 25 4
gpt4 key购买 nike

我有一个 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 驱动程序是相同的。

欢迎任何答案。

最佳答案

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

关于java - 使用 hibernate 将字符串 > 4000 转换为 CLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1439911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com