【问题标题】:ORA-01460: unimplemented or unreasonable conversion requested using Hibernate @LobORA-01460: 使用 Hibernate @Lob 请求未实现或不合理的转换
【发布时间】:2011-11-10 21:28:51
【问题描述】:

我有一个byte[],我坚持如下所示:

@Basic(fetch = FetchType.LAZY)
@Column(name = "ABF", length = Integer.MAX_VALUE)
@Lob
private byte[] abf;

看起来很简单,但是当我尝试在其中存储任何相当大的内容(超过 4000 个字符)时,当我尝试提交时出现以下异常:

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

我尝试存储的所有文件都没有接近 32,000 个字符。这里还有其他问题吗?

【问题讨论】:

    标签: java oracle hibernate jpa


    【解决方案1】:

    this post

    简而言之:

    <property name="hibernate.connection.SetBigStringTryClob">true</property>
    <property name="hibernate.jdbc.batch_size">0</property>
    

    也可以是:

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

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

    【讨论】:

    • 嗯......到目前为止,这些属性都没有运气。我使用的是 Oracle 11g,但使用的是 10g 方言,因为没有 11g 方言
    • @MTR 嗯。我的意思是,我知道这是问题所在,但我不记得如何解决它(我有:/ 顺便说一句,为什么你的长度是 Integer.MAX_VALUE?如果没有别的,把它设为一个合理的数字;可能无法解决它,但我假设你也不是真的。
    • 我开始认为文件中可能存在导致错误的字符或其他内容。它允许毫无例外地保存某些文件,而其他文件则抛出错误。我还不知道有什么区别。
    • 明白了!我必须更新两个库:hsqldb.jar(到版本 2.2.5)和 ojdbc14 到当前。感谢您的帮助@Dave Newton
    • @MTR Sweet;是的,当涉及到一些事情时,Oracle 驱动程序对版本非常敏感。我不确定我是否真的回答了这个问题,只是指出。考虑用详细信息回答您自己的问题并接受它。
    【解决方案2】:

    我刚刚更新了 oracle 驱动程序,它运行良好。

    主要是oracle驱动不匹配造成的。

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

    【讨论】:

      【解决方案3】:

      有时按顺序做事会有所帮助:

      • 插入带有空 lob 的新实体;
      • 提交;
      • 在新创建的实体上填充 lob;
      • 更新并提交。

      【讨论】:

        【解决方案4】:

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

        <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 版本后问题才解决。

        【讨论】:

          猜你喜欢
          • 2020-06-28
          • 2012-06-17
          • 2015-10-14
          • 2018-08-23
          • 2011-12-29
          • 1970-01-01
          • 2014-12-15
          • 2021-07-15
          • 2011-02-02
          相关资源
          最近更新 更多