【问题标题】:How to use Spring Repository Keywords "CONTAINING" and "IN" in single repository statement?如何在单个存储库语句中使用 Spring Repository 关键字“CONTAINING”和“IN”?
【发布时间】:2017-07-18 20:47:25
【问题描述】:

我想根据提供的姓名和年龄列表查找具有相似姓名的人,如以下 spring 存储库语句中所示。

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

我试过了,但没有用。我该如何解决?

【问题讨论】:

    标签: java spring jpa spring-data


    【解决方案1】:

    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);
    

    【讨论】:

    • 感谢您的回答。但请考虑在原生查询中包含关键字和分页。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      相关资源
      最近更新 更多