小弟正在做毕业涉及,是有关考试的,目前有3张表1。  exam表  (考试表)
     id  (主键)
     ... (一些无关属性)
     
2.   examinee表  (考生表)
     id  (主键)
     name   (姓名)
     examNo  (考号)
3.   examineeExam表 (考生考试表)
     id  (主键)
     examID  (外键)
     examineeID   (外键)
     score  (分数)exam.hbm.xml 中:
        <set name="examineeExams" inverse="true">
            <key>
                <column name="examID" />
            </key>
            <one-to-many class="com.hisoft.exam.bean.ExamineeExam" />
        </set>
examinee.hbm.xml 中:
        <set name="examineeExams" inverse="true" cascade="all"
            <key>
                <column name="examineeID" />
            </key>
            <one-to-many class="com.hisoft.exam.bean.ExamineeExam" />
        </set>
examineeExam.hbm.xml 中:
        <many-to-one name="examinee" class="com.hisoft.exam.bean.Examinee" fetch="select" lazy="false">
            <column name="examineeID" />
        </many-to-one>
        <many-to-one name="exam" class="com.hisoft.exam.bean.Exam" fetch="select" lazy="false">
            <column name="examID" />
        </many-to-one>所要实现的功能是,删除某个考生后,和该考生相关的考生考试 数据将全部删除为什么上述的代码能级联删除???
本来 在examinee.hbm.xml中,我inverse 是= false的,exam的inverse是true,我认为,examinee 是 主控方,exam是被控方
后来,我运行了之后,删除examinee,,examineeExam表中,examinee的数据没了,可是 他的 score还存在。
把两边都改成true了 却能实现,这是为什么??
我记得网上都说 cascade:在对主控方操作时,级联发生。那我现在这样 两边都是true,都不去维护,级联却又能删除。
现在又有疑问,,examinee和exam都是true了。。难道他们的中间表现表 examineeExam 是FALSE了??我知道 many-to-one中 是不能设inverse的,莫非 examineeExam 是 inverse 的默认值 false???
还有个疑问,我是用mysql数据库的,examineeExam这个表的外键的on delete和on update设了cascade,是不是在hibernate的级联删除中,数据库本身就要把表的外键的约束设成cascade???如果这边不设,是不是hibernate 的级联删除还是会无效啊??虚心求教 谢谢