2009-05-27 51 views

回答

13
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

https://forum.hibernate.org/viewtopic.php?t=941669

+0

每個人都應該考慮,而通過使用數據庫查詢來獲取不同的結果(例如從X中選擇DISTINCT(xyz))而不是使用Criteria.DISTINCT_ROOT_ENTITY。請注意Criteria.DISTINCT_ROOT_ENTITY從內存中的對象(而不是從數據庫中)獲取唯一結果,這對於大型結果集來說可能是昂貴的。 – Philipp 2013-04-04 16:56:42

6

看到一個更靈活的解決方案可能是:

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

當然你的意思是「Projections.distinct」 – speshak 2011-10-27 20:37:02

1

取決於您的查詢/標準。 如果你提供一個唯一的ID,你可以調用criteria.uniqueResult() 否則你打電話criteria.setMaxResults(1),並調用criteria.uniqueResult()