在JPA中使用正则表达式进行搜索

问题描述 投票:1回答:1

我正在尝试通过多个单词来执行简单的搜索功能,例如在SQL查询中这样

SELECT * FROM faqs WHERE title REGEXP 'préférée|Changer|endommagé' or question REGEXP 'préférée|Changer|endommagé'

但是当我试图像这样在我的JpaRepository中的@Query中实现这一点时>

@Query(value = "SELECT f FROM Faq f WHERE f.title REGEXP :term" )
Page<Faq> searchByRegExp(@Param("term") String term,Pageable pageable);

但是由于该错误,似乎不支持REGEXP

<expression>, <operator>, GROUP, HAVING or ORDER expected, got 'REGEXP'

注意:我尝试添加nativeQuery = true-相同的问题:

@Query(value = "SELECT * FROM faqs WHERE title REGEXP :term ", nativeQuery = true)
    Page<Faq> searchByRegExp(@Param("term") String term,Pageable pageable);
    

[我正在尝试通过多个单词来做一个简单的搜索功能,例如在SQL查询SELECT * FROM常见问题中,标题REGEXP'préférée| Changer |endommagé'或问题REGEXP'préférée| Changer |enmagmagé'...

java mysql regex spring jpql
1个回答
0
投票

遗憾的是jpql不支持正则表达式。您将必须使用like并写下所有可能性。但是您可以使用in

@Query(value = "SELECT f FROM Faq f WHERE f.title in (:terms)" )
Page<Faq> searchByRegExp(@Param("terms") List<String> terms, Pageable pageable);
© www.soinside.com 2019 - 2024. All rights reserved.