2009-05-27 5 views

答えて

13
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

も参照してくださいhttps://forum.hibernate.org/viewtopic.php?t=941669

+0

一つではなく、データベースクエリを使用して明確な結果を得るために検討すべきである(たとえば、 Criteria.DISTINCT_ROOT_ENTITYを使用する代わりに、XからSELECT DISTINCT(xyz)を選択します。 Criteria.DISTINCT_ROOT_ENTITYは、大きな結果セットではコストがかかるかもしれない、メモリ内の(データベースではなく)オブジェクトからのユニークな結果を取得することに注意してください。 – Philipp

6

より柔軟な解決策は次のようになります。

criteria.setProjection(Projections.distinct(Projections.property("property"))); 
+0

もちろん、あなたは "Projections.distinct"を意味しました – speshak

+0

私はうまくいきました。 – waxwing

+2

Projection.distinctの使用を避けたいのは、結果セットをその1つのプロパティだけに減らすという意図しない副作用があるからです。 – user959690

1

は、クエリ/基準に依存します。 あなたはcriteria.uniqueResult(呼び出すことができるユニークなIDを提供する場合) そうでなければ、(1)criteria.setMaxResultsを呼び出し、(criteria.uniqueResultを呼び出す)

関連する問題