クライテリア API での setResultTransformer メソッドの使用は何ですか? 誰かが簡単な例でこれを説明できますか? javadocs を読みましたが、明確に理解できません。
よろしく、
クライテリア API での setResultTransformer メソッドの使用は何ですか? 誰かが簡単な例でこれを説明できますか? javadocs を読みましたが、明確に理解できません。
よろしく、
setProjections() を使用しない Criteria クエリのデフォルトの ResultTransformer は になりますROOT_ENTITY
。
Department に対して ManyToMany 関係にある Student がある場合、クエリは次のようになります...
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
このクエリは重複を返します。しかし、次のように設定しResultTransformer
ます...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
これで、Hibernate が結果をマーシャリングすると、結果が明確になります。(または、アンマーシャルのことですか?)
Hibernate がクエリを として返したくないList<Student>
が、結果を として処理したいList<Object[]>
場合
crit.setResultTransformer(CriteriaSpecification.PROJECTION)