Hibernate--cascade屬性

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同時存儲在數據庫中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章