私は簡単な問題で立ち往生しています。 join
edエンティティでorder by
を呼び出す方法に苦しんでいます。私は、次のしているJPA CriteriaクエリAPIと2列で注文する
select distinct d from Department d
left join fetch d.children c
left join fetch c.appointments a
where d.parent is null
order by d.name, c.name
:
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Department> c = cb.createQuery(Department.class);
Root<Department> root = c.from(Department.class);
Fetch<Department, Department> childrenFetch = root.fetch(
Department_.children, JoinType.LEFT);
childrenFetch.fetch(Department_.appointments, JoinType.LEFT);
c.orderBy(cb.asc(root.get(Department_.name)));
c.distinct(true);
c.select(root);
c.where(cb.isNull(root.get(Department_.parent)));
どうCriteria API
とorder by d.name, c.name
を達成するために基本的に私はJPA Criteria
と、次の達成しようとしていますか?私はExpression、Pathで試したが動作しなかった。 すべてのポインタは非常に高く評価されます。
これは問題著者の答えですか? – ByeBye
なぜそれはないと思いますか?彼は知りたい、複数のプロパティでどのように注文するか。私の答えはそれを行う方法が含まれています...私は何かを逃していますか? – Adamsan
これは、結合表からの特性別のソートでは機能しないためです。 – ByeBye