Jpa 满足这个JPQL需求
要求:一个字符串的内容出现在另一个字符串中。这只测试整个单词,但允许多单词查询。例如,使用Jpa 满足这个JPQL需求,jpa,jpql,spring-data-jpa,Jpa,Jpql,Spring Data Jpa,要求:一个字符串的内容出现在另一个字符串中。这只测试整个单词,但允许多单词查询。例如,使用givenName:Jane的查询将使用givenName值为“Jane”和“Jane Ann”,而不是“Janet”的用户进行匹配。对givename:Mary Ann的多词查询将匹配“Mary Ann Evans”和“Sarah Mary Ann”的值,但不匹配“Ann Mary” 这就是我目前所拥有的。 我有一个SiteRepository扩展了JpaRepository接口,它包括以下方法 @Que
givenName:Jane
的查询将使用givenName
值为“Jane”和“Jane Ann”,而不是“Janet”的用户进行匹配。对givename:Mary Ann的多词查询将匹配“Mary Ann Evans”和“Sarah Mary Ann”的值,但不匹配“Ann Mary”
这就是我目前所拥有的。
我有一个SiteRepository
扩展了JpaRepository
接口,它包括以下方法
@Query("SELECT s from Site s WHERE s.name LIKE :givenName")
public List<Site> findByName(@Param("givenName") String givenName);
所以如果我调用,findByName(“:Jane”)
我应该得到以下JPQL查询:从站点s中选择s,其中s.name像%Jane%,而不是像\u Jane\ucode>
然而,这是行不通的。任何帮助都将受到感谢。我不是jpql方面的专家,因此我将在这里只写我的假设,这些假设不一定正确,但我会尽力帮助op
如果我的答案是错误的,那么请在答案上留言让我知道
我认为这个答案不应该被否决,因为我已经表明,我的答案不一定正确,如果不正确,我将删除它
这是我在不了解技术细节的情况下对问题的评论:
您应该编写一个查询,检查是否所有单词都是
现在,单词的第一个索引在单词的最后一个索引之前
下一个字
从startIndex
开始搜索searchString
在candidateString
中的位置,索引从1开始。其思想是编写一个查询,检查locate是否返回除0以外的值startIndex
,该值取决于前一个字符串的startIndex
。()如果所有字符串都符合条件,则记录应包含在结果中。我找到了解决方案。这似乎适用于我目前测试的案例
“从站点s中选择s,其中s.name不象'Jane',s.name不象'Jane',s.name不象'Jane',s.name象'%Jane%'”您应该编写一个查询,检查是否所有单词都存在,并且单词的第一个索引在下一个单词的最后一个索引之前。好的,这很有意义。您介意告诉我如何编写这样的jpql查询吗?
public List<Site> findByName(String givenName) //Where Site is an entity with a name field.
return siteRepository.findByName("%" + givenName.substring(1, givenName.length()) + "%"
+ " AND NOT LIKE _" + givenName.substring(1, givenName.length()) + "_");
LOCATE(searchString, candidateString [, startIndex])