我有一个byte[]
,我坚持按照以下方式持有Lob:
@Basic(fetch = FetchType.LAZY)
@Column(name = "ABF", length = Integer.MAX_VALUE)
@Lob
private byte[] abf;
看起来很简单,但是当我尝试在其中存储任何大小的内容(超过4000个字符)时,当我尝试提交时会出现以下异常:
java.sql.SQLException:ORA-01460:请求未实现或不合理的转换
我试图存储的文件都不是32,000个字符。这里还有其他问题吗?
答案 0 :(得分:2)
请参阅this post。
坚果壳:
<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
它也可以是:
对于数据库内容,提供驱动程序和数据库版本信息总是有帮助的:)
答案 1 :(得分:1)
我刚刚更新了oracle驱动程序,它工作正常。
主要是由于oracle驱动程序不匹配。
如果您拥有与oracle版本对应的正确版本的jdbc驱动程序,那么它应该不是问题。
答案 2 :(得分:1)
有时按顺序执行操作会有所帮助:
答案 3 :(得分:0)
<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
我之前使用的是hsqldb-2.0.0.jar。我将其更新为当前版本(hsqldb-2.2.5.jar)。我认为这是罪魁祸首,我发誓我已经注意到自从这样做以来数据库性能的提升。
我还更新到当前版本的ojdbc14.jar(10.2.0.5)。我以前是在一些旧版本,但我不确切知道哪一个。应该注意的是,即使在更新到版本10.2.0.5之后,问题也没有消失。直到我更新hsqldb.jar版本才解决问题。