当前位置: 首页 > 知识库问答 >
问题:

如何在JPA标准构建器中使用本地数据库操作符(postgres~)?

秦永望
2023-03-14

我使用JPA 2.0标准构建以下查询(简化):

select n from notif n where n.message ~ 'b.*la'

我正在使用后gresql数据库,我真的需要~运算符,而不是喜欢。是否有与我可以使用的标准生成器函数等效的东西?或者,在 postgres 中是否存在 ~ 运算符的函数形式,因此我可以使用上述 cb.function 方法。我只找到了 postgresql regexp_matches函数,但它返回的是匹配数组,而不是布尔值。

解决方案:由于从标准API迁移到JPQL是不可能的,因此我最终编写了一个postgres函数:

'CREATE OR REPLACE FUNCTION "regexp_search"(character varying,character varying) RETURNS boolean AS \'select $1 ~ $2;\' LANGUAGE sql;'

用cb.function称呼它:

Expression<Boolean> regexp_search = cb.function("regexp_search", Boolean.class, message,cb.literal(re));

共有1个答案

裴嘉许
2023-03-14

REGEXP或~不是JPQL标准的一部分。您可以使用本机SQL查询。

如果使用日食链接,则支持正则表达式,并且将在后记上工作,

http://www . eclipse . org/eclipse link/documentation/2.4/JPA/extensions/j _ regexp . htm # regexp

您还可以使用SQL函数来调用JPQL中任何特定于SQL的语法,

http://www . eclipse . org/eclipse link/documentation/2.4/JPA/extensions/j _ SQL . htm # SQL

 类似资料:
  • 我的用例是,我希望每个构建/运行的工件都有一个唯一的版本号。对于CircleCI、Travis等当前工具,有一个可用的构建编号,它基本上是一个不断上升的计数器。因此,我可以创建版本字符串,如0.1.0-27。即使对于相同的提交,此计数器也会每次增加。 如何使用GitHub Actions做类似的事情?Github操作只提供GITHUB_SHA和GITHUB_REF。

  • 我正在构建一个python项目--。我想使用Github操作来自动化一些linting 为此,我使用了Github推荐的python actions starter工作流——python应用程序的一个轻微修改。 在作业中的“安装依赖项”步骤中,我遇到了一个错误。这是因为pip试图安装我的本地软件包,但失败了。 如果[-f requirements.txt], 相应的错误是: 很可能,该作业无法安装

  • 我想在启动Postgres Docker映像后创建一个数据库。

  • 问题内容: 读完Hibernate之后:hbm2ddl.auto=正在生产中更新吗?出现了一些问题。首先,我使用Hibernate的原因是要与数据库供应商无关(无需编写10个版本的“相同” sql查询,例如tsql vs. sql)。 我的问题是在创建数据库架构(生产环境)时出现的。据我所知,我有两种选择。 hbm2dll =更新 纯sql(ddl)脚本。 在上面的主题中广泛讨论了第一种选择。第二

  • 本文向大家介绍在Perl数据库操作中使用NULL值,包括了在Perl数据库操作中使用NULL值的使用技巧和注意事项,需要的朋友参考一下 未定义的值或undef用于在Perl的数据库操作中指示NULL值。您可以像使用非NULL值一样插入和更新NULL值的列。这些示例使用NULL值插入和更新列寿命- 这里的qq {}用于返回带引号的字符串以准备API。但是,在WHERE子句中尝试使用NULL值时必须小

  • 我想在用户在UI中选择的MongoDB中的文档列表上运行批量删除操作,因此我需要动态构建一个如下所示的查询(or子句为所选的每个文档展开): 刚才我正在使用字符串串联来实现这一点。 是否可以使用Spring数据MongoDB标准生成器(org.springframework.Data.MongoDB.core.query.Criteria)构建此查询?