Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-01460:使用Hibernate@Lob请求的转换未实现或不合理_Java_Oracle_Hibernate_Jpa - Fatal编程技术网

Java ORA-01460:使用Hibernate@Lob请求的转换未实现或不合理

Java ORA-01460:使用Hibernate@Lob请求的转换未实现或不合理,java,oracle,hibernate,jpa,Java,Oracle,Hibernate,Jpa,我有一个字节[],我将其持久化到Lob,如下所示: @Basic(fetch = FetchType.LAZY) @Column(name = "ABF", length = Integer.MAX_VALUE) @Lob private byte[] abf; 看起来很简单,但当我尝试在其中存储任何较大的内容(超过4000个字符)时,我在尝试提交时遇到以下异常: java.sql.SQLException:ORA-01460:未实现或请求的转换不合理 我试图存储的文件中没有一个接近32000

我有一个
字节[]
,我将其持久化到Lob,如下所示:

@Basic(fetch = FetchType.LAZY)
@Column(name = "ABF", length = Integer.MAX_VALUE)
@Lob
private byte[] abf;
看起来很简单,但当我尝试在其中存储任何较大的内容(超过4000个字符)时,我在尝试提交时遇到以下异常:

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

我试图存储的文件中没有一个接近32000个字符。这里还有其他问题吗?

请参阅

简而言之:

<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
true
0
也可以是:

  • 旧的Oracle JDBC驱动程序(尽管我认为当时的限制是2k)
  • 驱动程序/数据库版本不匹配
  • Hibernate配置中指定了错误的Oracle方言
对于数据库内容,提供驱动程序和数据库版本信息总是很有帮助的:)

请参阅

简而言之:

<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
true
0
也可以是:

  • 旧的Oracle JDBC驱动程序(尽管我认为当时的限制是2k)
  • 驱动程序/数据库版本不匹配
  • Hibernate配置中指定了错误的Oracle方言

对于数据库内容,提供驱动程序和数据库版本信息总是很有帮助的:)

@Dave Newton让我走上了正确的道路。答案涉及几件事。正如Dave指出的,我在hibernate.cfg.xml中添加了以下行:

<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
true
0
我以前使用的是hsqldb-2.0.0.jar。我将其更新为当前版本(hsqldb-2.2.5.jar)。我认为这是罪魁祸首,并且我发誓我已经注意到了自这样做以来数据库性能的提高


我还更新了ojdbc14.jar的当前版本(10.2.0.5)。我以前用过一些旧版本,但我不知道到底是哪一个。应该注意的是,即使在更新到版本10.2.0.5之后,问题仍然没有消失。直到我更新了hsqldb.jar版本,问题才得以解决。

@Dave Newton让我走上了正确的道路。答案涉及几件事。正如Dave指出的,我在hibernate.cfg.xml中添加了以下行:

<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.jdbc.batch_size">0</property>
true
0
我以前使用的是hsqldb-2.0.0.jar。我将其更新为当前版本(hsqldb-2.2.5.jar)。我认为这是罪魁祸首,并且我发誓我已经注意到了自这样做以来数据库性能的提高


我还更新了ojdbc14.jar的当前版本(10.2.0.5)。我以前用过一些旧版本,但我不知道到底是哪一个。应该注意的是,即使在更新到版本10.2.0.5之后,问题仍然没有消失。直到我更新了hsqldb.jar版本,问题才得以解决。

我刚刚更新了oracle驱动程序,它工作正常

这主要是由于oracle驱动程序不匹配


如果您有与您的oracle版本相对应的正确版本的jdbc驱动程序,这应该不是问题。

我刚刚更新了oracle驱动程序,它工作正常

这主要是由于oracle驱动程序不匹配


如果您有与您的oracle版本相对应的正确版本的jdbc驱动程序,这应该不是一个问题。

有时,按此顺序执行操作会有所帮助:

  • 插入具有空lob的新实体
  • 承诺
  • 填充新创建实体上的lob
  • 更新并提交

有时候,按顺序做事会有帮助:

  • 插入具有空lob的新实体
  • 承诺
  • 填充新创建实体上的lob
  • 更新并提交

嗯。。。到目前为止,这些财产没有什么好运气。我使用的是Oracle11g,但使用的是10g方言,因为没有11gdialect@MTR嗯,我是说,我知道这是个问题,但我不记得怎么解决它了(我有:/顺便问一下,为什么你的长度
是整数。MAX_值
?如果没有别的,那就把它定为一个合理的数字;可能不会修正它,但我假设你也不是真的这么想。我开始想,可能是文件中的某个字符或某个东西导致了错误。它允许保存一些文件,没有例外。)nd其他人抛出错误。我还不能找出区别。明白了!我必须更新两个库:hsqldb.jar(到版本2.2.5)和ojdbc14到current。感谢您的帮助@DaveNewton@MTR亲爱的,是的,神谕司机在一些事情上是相当敏感的。我不确定我实际上回答了这个问题,只是指出。考虑回答你自己的问题的细节,并接受它代替。Hmm.…没有运气到目前为止,这些属性。我是使用Oracle 11g但使用10g方言,因为没有11gdialect@MTR嗯,我是说,我知道这是个问题,但我不记得怎么解决它了(我有:/顺便问一下,为什么你的长度
是整数。MAX_值
?如果没有别的,那就把它定为一个合理的数字;可能不会修正它,但我假设你也不是真的这么想。我开始想,可能是文件中的某个字符或某个东西导致了错误。它允许保存一些文件,没有例外。)nd其他人抛出错误。我还不能找出区别。明白了!我必须更新两个库:hsqldb.jar(到版本2.2.5)和ojdbc14到current。感谢您的帮助@DaveNewton@MTR是的,Oracle的驱动程序在一些事情上是相当敏感的。我不确定我实际上回答了这个问题,只是指出。考虑用细节回答你自己的问题,并接受它。