如何使此语句返回正确的实体数

时间:2012-06-13 15:04:24

标签: java hibernate

我正在使用一些遗留代码,因为我是Hibernate和DB设计的新手。我有以下声明:

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

它适用于几乎所有实体,除了具有多对多关系的特定实体。就我而言,数据库中的Nominations<-->Nominee<-->Employee。在我的bean中,Nomination有一个Employees列表来映射关系。

基本上totalItems正在返回被提名者的数量,而不是提名次数。例如,有2名候选人的提名计为2,而不是1。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我想通了。我改变了这个

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

用这个

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

基本上它现在正在计算。