У меня есть 3 класса
В Class1 есть список с элементами класса 2.
Это отображается через объединяемую таблицу (не может быть сопоставлено с внешним ключом, потому что ключ не будет уникальным)!
Class2 имеет внешний ключ класса 3.
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?Спасибо