基準APIでのsetResultTransformerメソッドの使用は何ですか?誰かがこれを簡単な例で説明できますか? Javadocを読みましたが、はっきりと理解できません。
よろしく、
SetProjections()を使用しないCriteriaクエリのデフォルトのResultTransformerはROOT_ENTITY
になります。
部署に対して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)
単に:基準を実行しているとき:結果セットを特定のオブジェクトにしたい場合は、次のように使用できます。
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
はResultSet
エンティティと一致する必要があります。