【问题标题】:how to do AND and multiple OR parameters method in spring data JPA如何在 Spring Data JPA 中执行 AND 和多个 OR 参数方法
【发布时间】:2014-11-11 04:31:45
【问题描述】:

我正在尝试为这个查询制定一个方法名称:

  @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 的情况下实现这一目标?

【问题讨论】:

  • 你已经有了查询,那为什么不给方法使用一个有意义的名字,易于阅读和理解,用例相关的名字,并用@Query注释呢?跨度>
  • @JBNizet 这是一个“愚蠢”的问题。我必须处理更多这样的要求。希望尽可能避免使用“@Query”。
  • 如果您的意思是查询更复杂,那是选择有意义的方法名称并使用 Query 注释的另一个原因。您真的不想要 200 个字符的方法名称,每次更改属性名称时都会更改。使用 Query 是一件好事。

标签: spring jpa spring-data-jpa


【解决方案1】:

目前不支持此功能,并且可能永远不会支持,原因很简单:

派生查询被认为是一种定义非常简单查询的方法。我承认这很模糊,但是如果您到达findByDepartmentAndfullTimeTrueOrContractorTrueOrSubContractorTrue,是时候重新考虑这是否真的是您想要向客户展示的内容。它写起来很别扭,读起来很别扭,实际上可能不仅仅是谓词的集合,而是传达更高层次的含义,因此应该以更具描述性的方式命名。

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

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 2016-11-15
    • 2014-05-18
    • 2014-09-22
    • 2021-12-03
    • 2020-04-03
    • 2015-07-06
    相关资源
    最近更新 更多