表里有几个字段,比如 B1,B2,B3。。。需要唯一的B1对应唯一的B2生成一条记录。
起初思想是,select distinct B1...一个集合存储;select distinct B2...又一个集合存储;select *...再一个集合存储。然后一层循环套一层循环,里面再一个循环,找到匹配需求的生成记录。。。速度不快!
select distinct xxx.b1,xxx.b2 from XXX xxx...这段HQL可以达到以上需求,一个b1对应一个b2生成一条记录。存储嘛,定义一个VO类,包含B1,B2属性和getter,setter方法;遍历也不难。
- B1B42 bb = null;
- tx = session.beginTransaction();
- String hql = "上面那段HQL";
- Query q = session.createQuery(hql);
- Iterator it = q.list().iterator();
- while(it.hasNext()){
- bb = new B1B2();
- o = (Object[]) it.next();
- long s1=(Long)o[0];
- String s2=(String)o[1];
- bb.setB1(s1);
- bb.setB42(s2);
- list.add(bb);
- }
- tx.commit();
- List list = bc();//bc()如上
- for(int i=0;i<list.size();i++){
- B1B2 bb = (B1B2)list.get(i);
- System.out.println(bb.getB1()+" "+bb.getB4());
- }