我有3個類
Class1具有帶有class2元素的列表。
這是通過連接表映射的(不能用外鍵映射,因爲鍵不會是唯一的)!HIbernate加載與深度2的關係
Class2有一個class3的外鍵。
Class3不保存任何關係。
整個事情是這樣的:
Class1 Class1-2 jointable Class2
+-----------+ +-----------+-----------+ +-----------+-----------+
| Class1_ID | | Class1_ID | Class2_ID | | Class2_ID | Class3_ID |
+-----------+ +-----------+-----------+ +-----------+-----------+
| 1 | | 1 | 3 | | 3 | 10 |
| 2 | | 2 | 7 | | 7 | 3 |
| ... | | ... | ... | | ... | ... |
+-----------+ +-----------+-----------+ +-----------+-----------+
Class3
+-----------+
| Class3_ID |
+-----------+
| 10 |
| 3 |
| ... |
+-----------+
映射是這樣的:
Class1:
List<Class2> class2;
<bag name="class2" cascade="all" table="Class1_Class2" lazy="false" access="field">
<key column="Class1_ID" />
<many-to-many class="Class2" column="Class2_ID"/>
Class2:
Class3 class3
<many-to-one name="class3" class="Class3" column="Class3_ID" fetch="join" unique="false"/>
所以,當我加載的Class1的元素與session.load( Class1.class,id)我得到的對象。但!
我可以訪問class1.class2(元素列表),但是當我嘗試訪問class1.class2.class3時,它給了我一個例外,即由於沒有會話而無法執行延遲加載。
由於我的數據結構,此時我無法打開會話。
我需要加載所有的數據庫訪問權限。
所以,現在我的問題:我可以改變一切都會一次加載的映射嗎?如果我不能如何在1會話中加載所有內容並返回一個class1對象,我可以訪問class1.class2.class3? 感謝