QueryDSL 谓词 SetPath.any 具有多个条件
2022-09-04 08:30:01
我有一个简单的实体,有一对多关系
@Entity // and other @ stuff
public class Member {
@Id
private Long id;
private String name;
private List<Program> programs;
...
}
@Entity
public class Program {
@Id
private Long id;
private Long programName;
private ProgramType programType;
private Long programCost;
...
}
现在使用QueryDSL,我想查询“所有注册了 programType = ”FULLTIME“且 programCost > $1000”
我使用了以下谓词
Predicate predicate = QMember.member.programs.any()
.programType.eq(ProgramType.FULLTIME)
.and(QMember.member.programs.any().programCost.gt(1000));
与 JPARepository
memberRepository.findAll(predicate);
现在的问题是这两个查询是独立的。它返回至少一个类型为“全职”的程序或至少一个成本大于 1000 的程序的所有成员。
期望结果 :如果他至少有一个程序是全职的,并且成本>1000,则返回成员。