hibernate 之 merge() 方法詳解

hibernate中,是不允許出現同一主鍵對象有兩個不同session同時關聯的情況,如果出現這種情況hibernate會拋出"org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions"這個異常,這個時候怎麼辦呢?我們需要通過hibernate提供的merge()這個方法來解決這一問題。

方法原型:
public Object merge(Object object)
使用merge方法是有如下情況
1、如果session中並不存在於參數object具有相同主見的對象,那麼,首先需要根據主鍵從數據庫中加載出該對象,然後將參數object中的屬性拷貝到加載出來的那個對象上面,最後返回該持久化對象,同時需要注意,參數object並沒有關聯到session上。

2、如果session中存在與參數objcet具有相同主鍵屬性的對象,那麼直接將參數object中的屬性拷貝到該持久化對象上,然後將該持久化對象返回,同時需要注意,參數object並沒有關聯到session上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章