私はグーグルでしたが、Criteria API で javax.persistence.criteria.Subquery のメソッドを呼び出した結果がどうなるかわかりません。
http://www.objectdb.com/api/java/jpa/criteria/Subquery/correlate_CollectionJoin_
これは本 Pro JPA2 Mastering the Java Persistence API からのものです。
このクエリの条件 API クエリ定義を作成するときは、平均給与を計算するために、プロジェクトの従業員属性を関連付けて直属の部下に結合する必要があります。この例では、型の多態的な比較を行うために 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); に参加します。