普通的一对多关系:
class A{
String aid;
List<B> bs=new ArrayList<B>();
}class B{
String bid;
A a;
int index;
}A.hbm.xml:(部分代码)
<list name="bs" table="TAB_B" cascade="all" inverse="true">
<key column="A_ID"></key>
<index column="INDEX"></index>
<one-to-many class="B" />
</list>数据库中并不重复,可是为什么我查询的时候List<A> as=query.list()会出现重复值?List<B> bs里有几项,得到的as里就会出现几个重复的A a。是否跟这个<index column="INDEX"></index>有关系?

解决方案 »

  1.   

    在查询中,你是不是把B也预先抓取出来了,比如用“from A left join fetch B”?
      

  2.   

    Query query = session.createQuery(from A a left join fetch a.bs b);
      

  3.   

    是的,我想查询的时候把相应的B也都查询出来,方便在JSP中用EL表达式进行显示
      

  4.   

    是你选B出的问题,你的是一对多的关系,所以选出数据如下
    a.1,b.1
    a.2,b.2
    a.3,b.3
    ...
    当然会有重复了!
      

  5.   

    写错了,哈哈!是你选B出的问题,你的是一对多的关系,所以选出数据如下 
    a.1,b.1 
    a.1,b.2 
    a.1,b.3 
    ... 
    当然会有重复了!