1
我有一個對象樹是這樣的:冬眠:分離父母和所有的孩子
美孚 - >(許多)酒吧,>巴茲
我要讓他們都短暫但富調用只分離分離富。我也不想清除會話,因爲會話中可能還有其他事情需要保留。
有沒有一種方法可以不用在整個樹上爬行?或者,在原始查詢中加載Foo的方式是否表示沒有返回的對象應該連接?
我有一個對象樹是這樣的:冬眠:分離父母和所有的孩子
美孚 - >(許多)酒吧,>巴茲
我要讓他們都短暫但富調用只分離分離富。我也不想清除會話,因爲會話中可能還有其他事情需要保留。
有沒有一種方法可以不用在整個樹上爬行?或者,在原始查詢中加載Foo的方式是否表示沒有返回的對象應該連接?
的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