zy_pub 2009-03-25 16:35
浏览 534
已采纳

DetachedCriteria查询去掉重复项的问题。。。。紧急。!

这个方法做查询,去掉cst_lost表 所有的重复项
[code="java"]
public Page findAllLost(int pageCount, int pageSize) {
DetachedCriteria criteria = DetachedCriteria.forClass(CstLost.class);
criteria.setProjection(Projections.distinct(Projections.projectionList()
.add(Projections.property("lstId"), "lstId")
.add(Projections.property("lstCustName"), "lstCustName")
.add(Projections.property("lstCustManagerName"), "lstCustManagerName")
.add(Projections.property("lstLastOrderDate"),"lstLastOrderDate")
.add(Projections.property("lstStatus"), "lstStatus")));
List allList = cstLostDAO.findByCriteria(criteria);
System.out.println("得到的长度"+allList.size());
Page page = new Page();
List list = new ArrayList();
for(Object[] obj:allList){
CstLost cstLost = new CstLost();
System.out.println("得到的ID"+obj[0]);
String lstId=obj[0].toString();
cstLost.setLstId(Long.parseLong(lstId));
cstLost.setLstCustName((String)obj[1]);
cstLost.setLstCustManagerName((String)obj[2]);
cstLost.setLstLastOrderDate((Date)obj[3]);
cstLost.setLstStatus((String)obj[4]);
list.add(cstLost);
}
page.setList(list);
return page;
[/code]
cst_lost表有主键ID,自动增长列。。。我在执行查询的时候 必须要查ID。。。 但是如果查ID的话,就去不掉重复项了, 怎么办呢?

[b]问题补充:[/b]
就是需要用到分页。。 才麻烦的。。 。
[b]问题补充:[/b]
今天在SQLserver2000的查询分析器里试了很多次

把ID这一列去掉,就能实现去掉重复项

但是,ID是不能去掉的

我在页面上要用到这个ID......

周一就答辩了。。。!!

着急啊。。。

  • 写回答

4条回答 默认 最新

  • zhoujuan520 2009-03-25 16:40
    关注

    我也碰到过你的问题,
    开始的时候我是换成 原生SQL才解决的.
    后来我发现可以通过优化查询条件.使用了别名等.终于可以用DetachedCriteria查出自己想要的数据,没有重复

    其实重复可能是你的条件没有设定真确.因为他是根据你的条件来查询的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?