我一直在谷歌搜索,但不明白调用 javax.persistence.criteria.Subquery en the Criteria API 的方法相关的后果是什么。
http://www.objectdb.com/api/java/jpa/criteria/Subquery/correlate_CollectionJoin_
这是来自 Pro JPA2 Mastering the Java Persistence API 一书。
在为此查询创建条件 API 查询定义时,我们必须关联 Project 的员工属性,然后将其连接到直接下属,以计算平均工资。此示例还演示了使用 Path 接口的 type() 方法来进行类型的多态比较:
CriteriaQuery<Project> c = cb.createQuery(Project.class);
Root<Project> project = c.from(Project.class);
Join<Project,Employee> emp = project.join("employees");
Subquery<Number> sq = c.subquery(Number.class);
Join<Project,Employee> sqEmp = sq.correlate(emp);
Join<Employee,Employee> directs = sqEmp.join("directs");
c.select(project)
.where(cb.equal(project.type(), DesignProject.class),
cb.isNotEmpty(emp.<Collection>get("directs")),
cb.ge(sq, cb.parameter(Number.class, "value")));
这条线有什么作用?
加入 sqEmp = sq.correlate(emp);