我有一个标有Lob的字符串字段的实体:
@Lob
public String getJson() {
return json;
}
我需要使用jpql在此字段上执行类似条件的查询。我无法使用本机查询,因为代码必须与Oracle和Postgresql兼容。我正在使用hibernate作为jpa实现。 查询不会返回任何内容,即使它被正确翻译(我在oracle的v $ _sqlarea上查询它以查看它及其参数)。在squirrel上执行已翻译的查询非常有效。
我是否试图在吊球场上进行错误/不允许的操作? 有没有人成功做同样的事情?
答案 0 :(得分:0)
根据您正在使用的方言,支持在LIKE
注释字段上使用@Lob
谓词运算符可能会被击中或错过。这是因为它取决于用于将CLOB
数据映射到数据库列的数据类型。
例如,SQL Server方言可能会将@Lob
带注释的String
字段映射到TEXT
数据类型,而不推荐使用,会允许LIKE
运算符。但另一种方言可能会将该字段映射到数据库不允许LIKE
运算符开启的数据类型。
其他方言可能允许LIKE
- 类似CLOB
列的操作;但他们通过特殊的数据库特定功能来实现这一目标在这些情况下,如果该要求适用于您的方言,则必须使用这些功能来支持您的搜索。