web-dev-qa-db-ja.com

CriteriaのsetResultTransformer

基準APIでのsetResultTransformerメソッドの使用は何ですか?誰かがこれを簡単な例で説明できますか? Javadocを読みましたが、はっきりと理解できません。

よろしく、

23
user182944

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)
15
carbontax

単に:基準を実行しているとき:結果セットを特定のオブジェクトにしたい場合は、次のように使用できます。

 .setResultTransformer(Transformers.aliasToBean(Employee.class));

EmployeeResultSetエンティティと一致する必要があります。

8
Appesh