2012-06-30 36 views
1

我有一個對象樹是這樣的:冬眠:分離父母和所有的孩子

美孚 - >(許多)酒吧,>巴茲

我要讓他們都短暫但富調用只分離分離富。我也不想清除會話,因爲會話中可能還有其他事情需要保留。

有沒有一種方法可以不用在整個樹上爬行?或者,在原始查詢中加載Foo的方式是否表示沒有返回的對象應該連接?

回答

0

的Hiberante的分離方法,不只是這一點:

public void detach(Object entity) { 
    try { 
     getSession().evict(entity); 
    } 
    catch (HibernateException he) { 
     throw convert(he); 
    } 
} 

它或多或少是:你已經擁有的對象,所以,讓剛剛從會話驅逐它讓它脫落。你可以做的是在這個屬性上級聯EVICT,所以當Foo被驅逐時Bar也被驅逐,Baz也被驅逐。爲了避免LazyInitializationException你需要保證它們都加載(也許FetchType EAGER?)


爲3.5你有CascadeType的DETACH,可能被用於此目的:http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/CascadeType.html