cascade屬性:表示級聯。默認值爲none。
注意例如,session.save(grade)時,我們希望將grade包含的student級聯操作保存到數據庫中,就必須在grade中添加學生,這樣grade才關聯了student:
grade.getStudents().add(stu1);
grade.getStudents().add(stu2);
session.save(grade);
並且在Grade.hbm.xml中Set節點設置cascade:
<set name="students" inverse="true" cascade="all">
<key>
<column name="gid" />
</key>
<one-to-many class="com.entity.Student" />
</set>
若沒有在grade中添加student,僅僅student在添加grade,如:
stu1.setGrade(grade);
stu2.setGrade(grade);
session.save(grade);
這樣在保存grade時,並不能級聯操作,因爲在grade中未存儲任何student,grade未關聯student。而只是單方面在student中添加grade,student關聯了grade。
那麼此時我們可改爲:
stu1.setGrade(grade);
stu2.setGrade(grade);
session.save(stu1);
session.save(stu2);
並在Student.hbm.xml的many-to-one設置cascade屬性:
<many-to-one name="grade" class="com.entity.Grade" fetch="select" cascade="all">
<column name="gid" />
</many-to-one>
這樣就可以將grade和student同時存儲在數據庫中。