我有一个带有标记为 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/