Java jpa:就像在高球场上一样

Java jpa:就像在高球场上一样,java,oracle,postgresql,hibernate,jpa,Java,Oracle,Postgresql,Hibernate,Jpa,我有一个实体,其字符串字段标记为Lob: @Lob public String getJson() { return json; } 我需要使用jpql在这个字段上执行一个类似条件的查询。我不能使用本机查询,因为代码必须与Oracle和Postgresql兼容。我使用hibernate作为jpa实现。 该查询不会返回任何内容,即使翻译正确。我在oracle的v$\u sqlarea上进行了查询,以查看它及其参数。在squirrel上执行翻译后的查询非常有效 我是否试图在lob字段上执行

我有一个实体,其字符串字段标记为Lob:

@Lob
public String getJson() {
    return json;
}
我需要使用jpql在这个字段上执行一个类似条件的查询。我不能使用本机查询,因为代码必须与Oracle和Postgresql兼容。我使用hibernate作为jpa实现。 该查询不会返回任何内容,即使翻译正确。我在oracle的v$\u sqlarea上进行了查询,以查看它及其参数。在squirrel上执行翻译后的查询非常有效

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

对@Lob注释字段使用LIKE谓词运算符的支持可能会受到影响,这取决于您使用的方言。这是因为它取决于用于将CLOB数据映射到数据库列的数据类型

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

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

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

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


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

我使用的是Oracle方言或Postgresql方言。这两个数据库都支持Clob字段。我使用的是Oracle方言或Postgresql方言。两个数据库都支持Clob字段上的like。日志是否显示捕获到的错误?您是否为这两个数据库使用最新的JDBC驱动程序,以防出现驱动程序支持问题?无错误。它只是不返回任何记录。我使用的是hibernate 4.0.0和weblogic 12.1.3,jpa 2.0日志是否显示捕获到的错误?您是否为这两个数据库使用最新的JDBC驱动程序,以防出现驱动程序支持问题?无错误。它只是不返回任何记录。我正在使用Hibernate4.0.0和WebLogic12.1.3,JPA2.0