24

クライテリア API での setResultTransformer メソッドの使用は何ですか? 誰かが簡単な例でこれを説明できますか? javadocs を読みましたが、明確に理解できません。

よろしく、

4

2 に答える 2

15

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)
于 2012-06-09T15:09:25.940 に答える