如何在Spring数据JPA中做AND和多个OR参数方法

时间:2014-11-11 04:31:45

标签: spring jpa spring-data-jpa

我正在尝试为此查询制定方法名称:

  @Query("from Employees where department = ?1 and (fullTime = true or contractor = true or subContractor = true)")

我认为这种方法可以解决这个问题,但是它会在一个部门和全部时间进行。

  public List<Employees> findByDepartmentAndfullTimeTrueOrContractorTrueOrSubContractorTrue(String dept);

这是一个相关的问题:Spring JPA Data "OR" query但是在2012年被问过。有没有办法在不使用@Query的情况下实现这一目标?

1 个答案:

答案 0 :(得分:8)

目前不支持此功能,可能永远不会出于一个非常简单的原因:

派生查询被认为是定义非常简单查询的一种方法。我承认这很模糊但是如果你到findByDepartmentAndfullTimeTrueOrContractorTrueOrSubContractorTrue,那么现在是时候重新思考这是否真的是你想要向客户公开的内容。编写起来很尴尬,难以阅读,实际上可能不仅仅是一个谓词集合,而是传达了更高层次的意义,因此应该以更具描述性的方式命名。

您已经发现的解决方案是使用@Query或Querydsl谓词。