java - jpa:在 Lob 字段上点赞

标签 java oracle postgresql hibernate jpa

我有一个带有标记为 Lob 的字符串字段的实体:

@Lob
public String getJson() {
    return json;
}

我需要使用 jpql 在此字段上执行类似条件的查询。我不能使用 native 查询,因为代码必须同时兼容 Oracle 和 Postgresql。我正在使用 hibernate 作为 jpa 实现。 该查询不返回任何内容,即使它被正确翻译(我对 oracle 的 v$_sqlarea 进行了查询以查看它及其参数)。在 squirrel 上执行翻译后的查询效果很好。

我是否试图在 lob 字段上执行错误/不允许的操作? 有没有人做同样的事情并取得成功?

最佳答案

@Lob 注释字段上使用 LIKE 谓词运算符的支持可能会成功或失败,具体取决于您使用的方言。这是因为它取决于用于将 CLOB 数据映射到数据库列的数据类型。

例如,SQL Server 方言可能会将带注释的 @Lob 字段映射到 TEXT 数据类型,虽然已弃用,但确实允许LIKE 运算符。但是另一种方言可能将该字段映射到数据库不允许使用 LIKE 运算符的数据类型。

其他方言可能允许对CLOB 列进行类似LIKE 的操作;然而,它们是通过特定于数据库的特殊功能来实现的。在这些情况下,如果该要求适用于您的方言,则您必须使用这些功能来支持您的搜索。

关于java - jpa:在 Lob 字段上点赞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42063517/

相关文章:

java - 打印单个喜欢的列表以进行测试

性能:LEFT JOIN 与 SUBQUERY

postgresql - 在窗口函数postgresql中选择一个条件

java - Liferay <门户组件 :actionURL>

java - 为什么 JCombobox 不是 AbstractButton 的子类?

xml 中的 java.lang.NullPointerException

.net - ORACLE SDO_GEOMETRY ToString()?

c++ - 如何在 Pro*C 中保持较低的实现/维护成本?

oracle - Oracle 中的显式游标和隐式游标有什么区别?

sql - 范围值 SQL