解决方案 »

  1.   

    忘记说了 ,我用的hibernate版本是 3.3.2 。
    如果朋友能在改环境下测试一下,感激不尽。
      

  2.   

    漏了invert,无论多对多还是一对多都只需一端来管理就行了
      

  3.   

    String hql = " select t.name from Teacher t left outer join t.studentSet s  where s is null";自己搭建环境测试了一下,通过在双向关联的时候,是需要设置inverseinverse="true"
    这里不需要设置lazy
    顺便给楼主看一下
    我的xml配置

    <!-- 老师(多方) -->
    <class name="Teacher" table="teachers">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"/>
    <set name="studentSet" table="middles" cascade="all" inverse="true">
    <key column="tid"/>
    <many-to-many class="Student" column="sid"/>
    </set>

    </class>

    <!-- 学生(多方),产生维护SQL -->
    <class name="Student" table="students">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"/>

    <set name="teacherSet" table="middles">
    <key column="sid"/>
    <many-to-many class="Teacher" column="tid"/>
    </set>

    </class>