ORA-22835 使用 JPA(缓冲区太小)

Posted

技术标签:

【中文标题】ORA-22835 使用 JPA(缓冲区太小)【英文标题】:ORA-22835 using JPA (Buffer too small) 【发布时间】:2010-02-23 09:42:12 【问题描述】:

我正在尝试使用带有 @Lob 注释的字符串字段的实体。如果大于 40k 缓冲区大小限制,则该字段的内容。

我遇到的第一个问题与 JPA 实现(在我的例子中是 Hibernate)和 Oracle JDBC 驱动程序内部使用的 setString 方法有关。这个问题解决了添加

<property name="hibernate.connection.SetBigStringTryClob" value="true"/>

到我的 persistence.xml 文件。

然后,错误变为 ORA-22835 错误(缓冲区太小)。 ¿ JPA 有什么方法可以在不进行低级实现的情况下解决这个问题? ¿ 有什么建议吗?

【问题讨论】:

您使用的是哪个版本的 Oracle JDBC 驱动程序? 【参考方案1】:

您可以尝试使用Oracle 10g Release 2 drivers(选择最新的 ojdbc14.jar,即 10.2.0.4)或更高版本(如this previous answer 中所述,旧版本存在问题)。

【讨论】:

好吧...我下载了最后一个驱动程序(我以为我已经有了,但我错了)。现在我有另一个错误: ORA-24816 =>在实际 LONG 或 LOB 列之后提供的扩展的非 LONG 绑定数据我读过这是一个 Oracle 问题。有没有办法让 JPA(或底层实现,在我的例子中为 Hibernate)按给定顺序对列进行排序,以便 Clob 列排在最后?看来这就是我现在遇到的问题... 问题刚刚消失 :S 我对此不太高兴,因为今天消失的东西明天可能会再次出现,但它确实看起来像配置问题。

以上是关于ORA-22835 使用 JPA(缓冲区太小)的主要内容,如果未能解决你的问题,请参考以下文章

ORA-22835: 缓冲区太小和 ORA-25137: 数据值超出范围

替换 PL/SQL 中的特殊 XML 字符

执行动态SQL报“字符串缓冲区太小”错误,请问各位高手怎么解决啊

oracle expdp导出报错“字符串缓冲区太小”

使用 wcsncpy_s 复制字符串时缓冲区太小

strncpy_s - 缓冲区太小断言