jpa:喜欢Lob领域

时间:2017-02-06 08:42:09

标签: java oracle postgresql hibernate jpa

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

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

我需要使用jpql在此字段上执行类似条件的查询。我无法使用本机查询,因为代码必须与Oracle和Postgresql兼容。我正在使用hibernate作为jpa实现。 查询不会返回任何内容,即使它被正确翻译(我在oracle的v $ _sqlarea上查询它以查看它及其参数)。在squirrel上执行已翻译的查询非常有效。

我是否试图在吊球场上进行错误/不允许的操作? 有没有人成功做同样的事情?

1 个答案:

答案 0 :(得分:0)

根据您正在使用的方言,支持在LIKE注释字段上使用@Lob谓词运算符可能会被击中或错过。这是因为它取决于用于将CLOB数据映射到数据库列的数据类型。

例如,SQL Server方言可能会将@Lob带注释的String字段映射到TEXT数据类型,而不推荐使用,会允许LIKE运算符。但另一种方言可能会将该字段映射到数据库不允许LIKE运算符开启的数据类型。

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