1

我正在使用 PostgreSQL 开发小型 Java 应用程序来学校项目。

使用 JDBC 驱动程序,我可以使用~运算符选择一个字段来充当,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.

我可以在谷歌上找到的所有代码示例都是使用LIKE而不是CONTAINING.

我的问题是,JPA 在使用 PostgreSQL 时是否支持包含运算符?

一些信息:

JDK 15
Netbeans 12.3
JPA 2.1
PostgreSQL 13.2
4

1 回答 1

1

您的直觉是正确的,因为jpa不支持~运算符,有关更多信息,您可以检查包含 pdf 规范的persistence-2_1 oracle 链接以及包括运算符jpa的所有可用jpa运算符的列表。可用的比较运算符如下: =、>、>=、<、<=、<>(不等于)、[NOT]BETWEEN、[NOT]LIKE、[NOT]IN、IS[NOT]NULL、IS [不]空,[不]成员[的],[不]存在~

于 2021-05-29T10:03:17.550 回答