我目前正在使用spring-data-jpa
版本1.9.4
.
我有一个 MySql 表,其中包含项目(整数)、摘要(varchar)和描述(varchar)列。
我有一个正则表达式,我想用它来搜索摘要和/或描述字段,这意味着如果它在摘要中找到它,则不需要将正则表达式应用于描述。
我尝试使用的存储库方法是:
List<Issue> findByProjectAndSummaryOrDescriptionRegex(long project, String regex)
我收到的错误是:
java.lang.IllegalArgumentException:不支持的关键字 REGEX (1):
[MatchesRegex,匹配,正则表达式]
在我的公司环境中更新/升级版本很困难,因此,如果问题不是我的语法,而是如果有人知道哪个版本现在支持“正则表达式”进行查询派生,或者我在哪里可以找到特定信息,我将不胜感激。我看过Changelog
看来1.9.4
应该支持,但貌似不支持。
感谢您的帮助!
JD
编辑1:我知道@Query
注释,但我的领导要求我仅在找不到支持关键字 REGEX [MatchesRegex、Matches、Regex] 的正确版本时才使用该注释作为最后手段
我建议使用本机查询(使用@Query
注解)如果 Spring 数据语法不起作用,例如:
@Query(nativeQuery=true, value="SELECT * FROM table WHERE project = ?1 AND (summary regexp ?2 OR description regexp ?2)")
List<Issue> findByProjectAndSummaryOrDescription(long project, String regex);
Update
如果本机查询不是一个选项,那么(a)您可以尝试使用单列并看看是否有效,(b)您可以通过附加尝试regex
到两列,例如:
List<Issue> findByProjectAndDescriptionRegex(long project, String regex);
List<Issue> findByProjectAndSummaryRegexOrDescriptionRegex(long project, String regex, String regex);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)