hibernateTemplate и чтение родительских / дочерних классов в dataModel - PullRequest
0 голосов
/ 22 августа 2011

Я оторвался от этой цели после успешного использования dataModel при рендеринге результата из hibernateTemplate (). Find в другом классе, где нет сопоставления «многие к одному» с другим классом.

Кто-нибудь использовал аналогичное определение, подобное приведенному ниже, где вам нужен весь ParentClass плюс только одно свойство из дочернего класса. В моем случае использования мне нужно отобразить receiveDate вместе со всеми другими значениями, содержащимися в экземпляре ParentClass.

<hibernate-mapping> <class catalog="myCatalog" name="myCatalog.model.orm.MyClass" table="myTable">
<id name="consignmentId" type="java.lang.Integer">
  <column name="myTable_id"/>
  <generator class="identity"/>
</id>
<many-to-one class="myCatalog.model.orm.ParentClass" fetch="select" name="pTable">
  <column name="pTable_id" not-null="true"/>
</many-to-one>
<property name="receiptDate" type="timestamp">
  <column length="19" name="receipt_date" not-null="true"/>
</property> </class> </hibernate-mapping>

Ближайшее, что у меня есть, это: hibernateTemplate (). find ("выберите c.parentClass из myClass c");

Однако при попытке адресации элементов parentClass, например: parentClass.depotAddress в dataTable я получаю следующую ошибку, так как parentClass не был загружен: org.hibernate.LazyInitializationException: не удалось инициализировать прокси - нет сеанса

Буду признателен за любые указатели в правильном направлении.

В любом случае я только что нашел решение, принудительно загружая ParentClass с помощью:

<many-to-one class="myCatalog.model.orm.ParentClass" lazy=false fetch="select" name="pTable">

1 Ответ

0 голосов
/ 23 августа 2011

Ваш вопрос далеко не ясен. Если вы хотите загрузить все экземпляры MyClass вместе с родительским элементом pTable, используйте запрос

select m from MyClass m inner join fetch m.pTable

Это, конечно, описано в справочной документации Hibernate .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...