表结构:字段:orderid    orderTitle   flowNo      Re
   
     1111         题。。       SOO1         销售    
      1112                SOO1         销售 
      1113                SOO2         销售
      1114                SOO3         销售
      1115                SOO3         销售
     
像上面的存储结构。
  
 现在我想通过flowNo查找出flowNo相同的记录组中的一个,而且hibername要返回所有字段来填充实体.不能用groub by想要的结果像下面:字段:orderid    orderTitle   flowNo      Re
   
     1111         题。。       SOO1         销售    
      1113                SOO2         销售
      1114                SOO3         销售就是去掉flowNo重复的

解决方案 »

  1.   

    希望得到 org.hibernate.Criteria的查询语句
      

  2.   


    create table test(orderid int,orderTitle varchar(50),flowNo varchar(20),Re varchar(50))
    insert test select 1111,'题..','s001','销售'
    union all select 1112,'','s001','销售'
    union all select 1113,'','s002','销售'
    union all select 1114,'','s003','销售'
    union all select 1115,'','s003','销售'
    goselect * from testselect * from test t where not exists(select * from test where orderid<t.orderid and flowNo = t.flowNo)
    orderid     orderTitle                                         flowNo               Re                                             
    ----------- -------------------------------------------------- -------------------- -------------------------------------------------- 
    1111        题..                                                s001                 销售
    1112                                                        s001                 销售
    1113                                                        s002                 销售
    1114                                                        s003                 销售
    1115                                                        s003                 销售(所影响的行数为 5 行)orderid     orderTitle                                         flowNo               Re                                             
    ----------- -------------------------------------------------- -------------------- -------------------------------------------------- 
    1111        题..                                                s001                 销售
    1113                                                        s002                 销售
    1114                                                        s003                 销售(所影响的行数为 3 行)
    承揽:网站开发,SEO优化,毕业设计,OA,ERP,空间,域名,企业级管理系统  业务范围:[.net] [java]
      

  3.   

    这样的话你可以用session.executeSQLQuery();来执行承揽:网站开发,SEO优化,毕业设计,OA,ERP,空间,域名,企业级管理系统  业务范围:[.net] [java]
      

  4.   

    还是 希望得到 org.hibernate.Criteria的查询语句
      

  5.   

    如果没人回,我就给个笨方法,你重写这个类里面的equals(),让对象比较是通过flowNo进行的,然后用一个set来存储返回的数据,这样就会得到你想要的结果了。
      

  6.   


    我这里是已经用hibernate 的分页了。不能那么做
      

  7.   

    用Criteria里的group by可以吗?Criteria criteria = session.createCriteria(XXXXX.class); //你的POJO名
    criteria.setProjection(Projections.groupProperty("flowNo"));
    List all = criteria.list();
      

  8.   

    这种情况就可以考虑原生查询了,根据不同的数据库有不同的sql的
      

  9.   

    想到了,
    你只要在 Select distinct * From .......加关键字 Distinct 就可以,还避免了 Order By 对于效率的流失 !你试试吧 !
      

  10.   

    就是一个删除重复的记录啊~~以下只保存orderid最小的~
    delete tablename where orderid not in(select min(orderid) from tablename group by flowNo)
    上面的不知道可以不~~~
    如果是我我会先找出orderid不是最小的对象~~然后用session.delete()方法删除