2011-11-04 103 views
3

層次結構如下:父對象與一個子對象相關聯。 我創建了一個新的Parent對象,並希望將它與一個已存儲在數據庫中的Child對象相關聯,並將Parent保存到數據庫。一種方法是預先加載孩子並將其與父母關聯。 但是,我可以創建一個新的Child對象,設置它的id,並將它與Parent關聯,所以當我保存Parent時,hibernate會自動找到合適的Child並填寫缺少的Child字段,它們最初設置爲null?休眠保存關聯

謝謝。

回答

5

不可以。您必須從數據庫中獲取子項。但是,如果您使用session.load而不是session.get,它只會將代理初始化爲實際的持久對象,甚至不執行SQL查詢。當然,如果實體確實不存在於數據庫中,那麼在刷新時(或者如果實體稍後在事務中由代碼的其他部分獲取),您將有一個異常。

Child child = session.load(Child.class, idOfChild); // no SQL query here 
Parent p = new Parent(); 
p.setChild(child); 
session.persist(p);