如何 select 在 JPA 中使用 CONTAINS 而不是 LIKE
How to select using CONTAINS instead of LIKE with JPA
我正在使用 PostgreSQL 为学校项目开发小型 java 应用程序。
使用 JDBC 驱动程序,我可以 select 使用 ~
运算符充当 CONTAINING
的字段,而不是使用 LIKE
连接过滤器。
举个例子:
SELECT * FROM USERS WHERE NAME ~ ? ORDER BY NAME
自从我们开始使用 JPA 框架来简化开发以来,我注意到当我使用 ~
运算符时,使用 JPA 的同一示例会引发错误...
抛出错误:
An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [select u from Users u where u.name ~ ?1 order by u.name].
[30, 41] The expression is not a valid conditional expression.
我在 google 上找到的所有代码示例都是使用 LIKE
而不是 CONTAINING
制作的。
我的问题是,在使用 PostgreSQL 时,JPA 是否支持包含运算符?
一些信息:
JDK 15
Netbeans 12.3
JPA 2.1
PostgreSQL 13.2
您的直觉是正确的,因为 jpa
不支持 ~
运算符,有关更多信息,您可以查看包含 [=10= 的 persistence-2_1 oracle link ] pdf 规范,包含所有可用 jpa
运算符的列表 not,包括 ~
运算符。
可用的比较运算符如下:=、>、>=、<、<=、<>(不等于)、[NOT]BETWEEN、[NOT]LIKE、[NOT]IN,IS[NOT]NULL,IS[NOT]EMPTY,[NOT]MEMBER[OF],[NOT]EXISTS
我正在使用 PostgreSQL 为学校项目开发小型 java 应用程序。
使用 JDBC 驱动程序,我可以 select 使用 ~
运算符充当 CONTAINING
的字段,而不是使用 LIKE
连接过滤器。
举个例子:
SELECT * FROM USERS WHERE NAME ~ ? ORDER BY NAME
自从我们开始使用 JPA 框架来简化开发以来,我注意到当我使用 ~
运算符时,使用 JPA 的同一示例会引发错误...
抛出错误:
An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [select u from Users u where u.name ~ ?1 order by u.name].
[30, 41] The expression is not a valid conditional expression.
我在 google 上找到的所有代码示例都是使用 LIKE
而不是 CONTAINING
制作的。
我的问题是,在使用 PostgreSQL 时,JPA 是否支持包含运算符?
一些信息:
JDK 15
Netbeans 12.3
JPA 2.1
PostgreSQL 13.2
您的直觉是正确的,因为 jpa
不支持 ~
运算符,有关更多信息,您可以查看包含 [=10= 的 persistence-2_1 oracle link ] pdf 规范,包含所有可用 jpa
运算符的列表 not,包括 ~
运算符。
可用的比较运算符如下:=、>、>=、<、<=、<>(不等于)、[NOT]BETWEEN、[NOT]LIKE、[NOT]IN,IS[NOT]NULL,IS[NOT]EMPTY,[NOT]MEMBER[OF],[NOT]EXISTS