2011-01-31 202 views
0

我有一些通過hibernate映射的對象。休眠映射問題

A有一架B

B有許多C

我創建B,給它CS的列表,並設置A.在B保存它,一切都將在正確的地方在DB 。

當我檢索B時,我可以調用b.getCs()和Cs在那裏。涼。

我的問題是,當我檢索A,對B是有,但是當我打電話a.b.getCs()我收到以下錯誤:

org.hibernate.LazyInitializationException - could not initialize proxy - no Session - 10890

有誰知道這是爲什麼不工作?

+3

懶加載問題是Hibernate中非常常見的問題。 Stackoverflow充滿了關於這個的問題和答案,我建議使用搜索字段在那裏.../ – skaffman 2011-01-31 15:50:38

回答

0

禁用延遲加載mappping,如果你正在使用XML爲您的映射,試試這個

<hibernate-mapping default-lazy="false"> 

但是使用這個時候,你需要考慮你的性能問題,因爲這將讓你的程序很慢在一個大的查詢結果。

如果使用譯註:

@ManyToOne(fetch=FetchType.LAZY) 
public List<A> getAllA(){ 
    //this is your method to get all A's list 
} 
0

更改您的映射以禁用Bs上C的延遲加載。當然,如果您嘗試同時檢索大量的Bs,則會受到性能影響。你

0

你沒有提到的應用程序的類型。如果它是一個Web應用程序,請考慮在視圖中使用Open Session(https://community.jboss.org/wiki/OpenSessionInView)。這也可能有所幫助。