You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data JPA Regex查询方法报错,文档显示支持该关键词求助

问题描述

我定义了一个使用正则表达式(Regex)和分页功能返回对象的方法:

Page<JokeModel> searchAllByPhraseRegex(String phrase, Pageable pageable);

但运行时抛出异常:Unsupported keyword REGEX (1): [MatchesRegex, Matches, Regex]。
Spring Data JPA 1.3.0.RELEASE文档明确说明支持Regex关键词,且IntelliJ IDEA也提供了该方法的自动补全提示,请问该如何解决此问题?

解决方案

  • 检查底层ORM实现版本:Spring Data JPA只是抽象层,实际执行查询的是Hibernate这类ORM框架。早期Hibernate版本(如4.3.11之前)不支持Regex相关的JPQL函数,即便Spring Data文档标注支持也会报错。如果用Hibernate,升级到4.3.11.Final及以上版本。
  • 改用@Query手动实现:若无法升级ORM,直接通过注解写查询逻辑:
    @Query("SELECT j FROM JokeModel j WHERE j.phrase REGEXP :phrase")
    Page<JokeModel> searchAllByPhraseRegex(@Param("phrase") String phrase, Pageable pageable);
    
    也可以用原生SQL(注意适配数据库正则语法,比如MySQL用REGEXP,PostgreSQL用~):
    @Query(value = "SELECT * FROM joke_model WHERE phrase REGEXP :phrase", nativeQuery = true)
    Page<JokeModel> searchAllByPhraseRegex(@Param("phrase") String phrase, Pageable pageable);
    
  • 确认Repository配置:确保你的Repository接口正确继承JpaRepository或PagingAndSortingRepository,避免自定义RepositoryFactoryBean覆盖默认方法解析逻辑。
  • 校验正则语法:不同数据库正则语法存在差异,确保传入的phrase符合当前数据库的规范,避免因语法错误引发异常。

内容的提问来源于stack exchange,提问作者John Roice M. Aldeza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:20:28