微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何选择使用 CONTAINS 而不是 LIKE 与 JPA

如何解决如何选择使用 CONTAINS 而不是 LIKE 与 JPA

我正在使用 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.

我在 google 上能找到的所有代码示例都是使用 LIKE 而不是 CONTAINING 制作的。

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

一些信息:

JDK 15
Netbeans 12.3
JPA 2.1
Postgresql 13.2

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。