Department对象有
         private int id;
private String name;
Set <Employee> emps;
Employee对象有
         private int id;
private String name;
private Department department;使用hql:  from  Department d left  join fetch d.emps这条语句查出来的数据有重复数据
比如一个department有两个employee的数据时,查出来是两个department和department其下的两个employee,两个department数据是完全一样的,这个是怎么一回事

解决方案 »

  1.   

    <hibernate-mapping package="com.hibernate.entity"> <class name="Department">
    <id name="id">
    <generator class="native"></generator>
    </id>
    <property name="name" /> <set name="emps" inverse="true" >
    <key column="depart_id"></key>
    <one-to-many class="Employee" />
    </set> </class>
    </hibernate-mapping>
    <hibernate-mapping 
    package="com.hibernate.entity"> <class name="Employee">
    <id name="id" >
    <generator class="native"></generator>
    </id>
    <property name="name" />
    <many-to-one name="department" column="depart_id" class="Department" >
    </many-to-one>
    </class>
    </hibernate-mapping>配置的文件的关系是上面的,能指出哪里有问题才导致这样重复的数据出现吗
      

  2.   

    重复数据是因为你写的HQL就是有重复数据的。
    加个show_sql配置看看sql就知道了,不细讲了。
    HQL可以这样写,不会重复了。
    select distinct d from  Department d left  join fetch d.emps
      

  3.   

    直接这样写:
    from Department.
    看有没重复的~