【发布时间】:2016-11-27 04:24:32
【问题描述】:
我有一个具有一对多关系的简单实体
@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);
现在的问题是这两个查询是独立的。它返回具有至少一个“FULLTIME”类型程序或至少一个成本大于 1000 的程序的所有成员。
期望的结果:如果他有至少一个 FULLTIME 类型且成本 > 1000 的程序,则返回成员。
【问题讨论】:
标签: java spring-data-jpa querydsl