最近在用SSH做毕设的时候,用Criteria进行进行分页查询出现了重复记录,查阅相关资料后,运用以下方法可进行去重+分页
@Override
public List<Selectquestion> list(Page page) {
Session session = this.getSession();
Criteria criteria = session.createCriteria(Selectquestion.class);
//1.分页查询出所有的Subquestion的id
criteria.setProjection(Projections.id());
List<String> List = criteria.setFirstResult(page.getBeginIndex()).setMaxResults(page.getEveryPage()).list();
//2.重新构建criteria查询
Criteria c = session.createCriteria(Selectquestion.class);
List<Selectquestion> results = new ArrayList<Selectquestion>();
//3.查询所有id在List里的Subquestion
if(List.size()>0){
c.add(Restrictions.in("id",List));
//去重
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
results = c.list();
}
return results;
}
参考:https://www.cnblogs.com/eleven258/p/9413289.html