我正在使用一些遗留代码,因为我是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。
我该如何解决这个问题?
谢谢!
答案 0 :(得分:0)
好的,我想通了。我改变了这个
totalItems = ((Number) criteria.setProjection(Projections.rowCount()).
uniqueResult()).intValue();
用这个
totalItems = ((Number) criteria.setProjection(Projections.countDistinct("id")).
uniqueResult()).intValue();
基本上它现在正在计算。