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 中通过布尔属性查询而不使用方法参数