条件查询(criteria)

    技术2022-05-19  27

    分页中有重复记录统计总的条数 int total = ((Integer)criteria.setProjection(Projections.countDistinct ("id")).uniqueResult()).intValue();

              执行后的语句 select count(distcint id) from  table;

    没有重复记录的时候

              int total = ((Integer)criteria.setProjection(Projections.rowCount ()).uniqueResult()).intValue();

              执行后的语句 select count(*) from  table;

     

          2.  查询结果除掉重复的记录

     第一种是数据库的distinct

              ProjectionList 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[]>(投影查询)

     

     

     


    最新回复(0)