如何在单个存储库语句中使用Spring Repository关键字“CONTAINING”和“IN”?

时间:2017-07-18 20:47:25

标签: java spring jpa spring-data

我希望根据提供的名称和年龄列表找到名称相似的人,如下面的spring存储库声明中所示。

Page<Person> findByNameContainingInAndAge(Pageable pageRequest, Collection<String> listOfNames, Integer age);

我尝试了但没有工作。我该如何解决?

2 个答案:

答案 0 :(得分:0)

Spring Data可能不支持所有可能的查询。有时你必须创建一个自定义的。尝试这样的事情:

@Query("SELECT p FROM Person p WHERE p.name IN (:listOfNames) and p.age = :age ")
public List<Person> findByNameContainingInAndAge(@Param("listOfNames") Collection<String> listOfNames, @Param("age") Integer age);

答案 1 :(得分:0)

我在同一个字段上尝试了很多“IN”和“Containing”的组合,但没有奏效。最后,我总结说,从理论上讲,问题中提到的存储库语句是不可能的。
因为“CONTAINING”关键字只接受字段的一个值,“IN”关键字接受字段“name”的值集合。因此,无法在单个存储库语句中同时在单个字段上应用这两个关键字。