执行后的语句 select count(distcint id) from table;
没有重复记录的时候int total = ((Integer)criteria.setProjection(Projections.rowCount ()).uniqueResult()).intValue();
执行后的语句 select count(*) from table;
2. 查询结果除掉重复的记录
第一种是数据库的distinctProjectionList projectionList = Projections.projectionList(); projectionList.add(Projections.property("id")); projectionList.add(Projections.property("name")); criteria.setProjection(Projections.distinct(projectionList));
执行的sql语句 SQL: select distinct id, name from table;
criteria.setProjection(Projections.distinct(Projections.property("id")));
执行的sql语句 SQL: select distinct id from table;
第二种是在结果集中通过hibernate去重,对大量数据效率太低,如果是分页查询还是不能用这种的 ,因为它是查询后的出重。
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
3.Criteria的结果集
Criteria的结果集最常用分两种:对象List、List<Object[]>(投影查询)