【问题标题】:JPA Repository Query Language - AND with OR not working properlyJPA 存储库查询语言 - AND 与 OR 无法正常工作
【发布时间】:2017-12-30 13:00:38
【问题描述】:

我正在开发一个具有带有查询的 JPA 存储库的项目。其中一个查询在同一查询中有 AndOr,但它不能正常工作。

List<Partner> findDistinctByUserNameNotNullAndPartnerNoInAndUserNameLikeOrFirstNameLikeOrderByPartnerNo(
        List<Integer> partnerNos, String userName, String firstName);

发生的情况是,当我传递 no Filter 时,它会返回 65 rows,当我传递 Filter 例如“MAR”时,它会返回 265 rows,这没有意义,因为正在获取没有过滤器的查询所有行。我观察到的是UserNameLikeOrFirstNameLikeOr 正在划分查询。他正在列表中寻找PartnerUserName Like OR he just looks for a FirstName like something else.

我知道问题出在哪里,但我不知道如何解决。

简而言之:如何将 AndOr 放在同一个 JPA 查询中并使其正常工作?

谢谢!

【问题讨论】:

    标签: spring-boot spring-data-jpa jpql


    【解决方案1】:

    如果你想使用命名存储库方法来实现它,它会像:

    findDistinctByUserNameNotNullAndPartnerNoInAndUserNameLikeOrPartnerNoInAndFirstNameLikeOrderByPartnerNo(List<Integer> partnerNos, String userName, String firstName);
    

    但始终建议使用简短易读的方法名称,您可以使用JPA NamedQueries@Query

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 2014-05-18
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多