spring-data-jpa @Query 支持正则表达式语法吗?

Posted

技术标签:

【中文标题】spring-data-jpa @Query 支持正则表达式语法吗?【英文标题】:spring-data-jpa @Query support regex syntax? 【发布时间】:2014-07-07 00:14:19 【问题描述】:

我现在用spring data jpa连接MySQL服务器,如何使用@Query设置正则搜索?

@Query(value = "select t from Tenants t where t.id regexp ?1")
Page regexSearch(String text, Pageable pageable);

我的代码不起作用,错误是“原因:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:第 1 行第 72 列附近的正则表达式 [从 com.sg.beans 中选择 t。租户 t where t.id regexp ?1]",有人知道如何为正则表达式搜索编写代码吗?

【问题讨论】:

【参考方案1】:

JPQL 不支持正则表达式函数。您需要回退到原生 SQL(使用 @Query 注释上的 nativeQuery 标志)。

【讨论】:

我没有找到@NativeQuery 类,您能告诉我在哪个spring 包中吗? 没有@NativeQuery 类。如我的回答所示,将@Query 注释中的boolean 标志nativeQuery 设置为true,以便能够在查询声明中使用本机SQL。 这与 Spring 无关。我们按原样转发声明的查询。如果您获得了进一步的见解,看到了其他例外情况,将它们添加到问题中会很有帮助。 “不起作用”并不能真正帮助调查问题:)。 那么,为什么异常是由 Spring 引发的呢?如何找到这个异常的根源?org.springframework.dao.InvalidDataAccessApiUsageException: Unsupported keyword REGEX;嵌套异常是 java.lang.IllegalArgumentException: Unsupported keyword REGEX. @jvmvik - 在reference documentation 中阅读。

以上是关于spring-data-jpa @Query 支持正则表达式语法吗?的主要内容,如果未能解决你的问题,请参考以下文章

spring-data-jpa 存储库在 Query 中使用 Collection 作为 @Param

spring-data-jpa 使用 @Query 和 @Modifying 插入而不使用 nativeQuery 或 save() 或 saveAndFlush()

在 spring-data-jpa 中通过布尔属性查询而不使用方法参数

学习Spring-Data-Jpa---定义方法查询

没有 JPQL 查询的 Spring-data-jpa 中的 CURRENT_DATE

Spring-data-jpa 学习笔记