2012-06-13 22 views
1

因爲我是Hibernate和DB設計的新手,所以我使用了一些遺留代碼。我有以下聲明:如何使這個語句返回正確的實體數

totalItems = ((Number) criteria.setProjection(Projections.rowCount()). 
        uniqueResult()).intValue(); 
criteria.setProjection(null); 
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
criteria.addOrder(Order.desc("id")); 

它的工作原理與幾乎所有的實體,除了特定的一種具有許多一對多的關係。在我的情況下,在DB中是Nominations<-->Nominee<-->Employee。在我的beans提名中有員工名單來映射關係。

基本上totalItems正在返回提名人數而不是提名人數。例如,提名2名被提名人數爲2,而不是1.

我該如何解決這個問題?

謝謝!

回答

0

好吧,我想通了。我這個

totalItems = ((Number) criteria.setProjection(Projections.countDistinct("id")). 
       uniqueResult()).intValue(); 

改變了這種

totalItems = ((Number) criteria.setProjection(Projections.rowCount()). 
       uniqueResult()).intValue(); 

基本上它現在吃到不同。