Как остановить спящий режим от рекурсивной загрузки сущностей - PullRequest
0 голосов
/ 27 марта 2012

У меня есть следующая настройка в Db, представленная здесь в примерах классов Hib

Класс А {
частный B b; }

Класс B {
частный C c; }

класс C {
частный D d; }

Пример HQL: от A левого соединения a.b;

Это рекурсивно загружает все сущности из А в D. Как избирательно загружать сущности, говорят, что в этом случае я бы хотел, чтобы она загружалась до В?

1 Ответ

0 голосов
/ 27 марта 2012

Если вы используете mapping-файлы, вы можете указать hibernate на ленивую загрузку сущностей.Таким образом, объект не будет загружен, пока вы не получите доступ к свойству.Ниже приведен пример настройки отложенной загрузки сущностей.Классы A и B всегда загружаются, но остальные загружаются только после того, как вы попытаетесь получить доступ к их свойствам.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="TestNamespace.A, TestNamespace" table="A" lazy="false" />
  <many-to-one name="B" column="B" />
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="TestNamespace.B, TestNamespace" table="B" lazy="false" />
  <many-to-one name="C" column="C" />
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="TestNamespace.C, TestNamespace" table="C" lazy="true" />
  <many-to-one name="D" column="D" />
</hibernate-mapping>


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="TestNamespace.D, TestNamespace" table="D" lazy="true" />
  <property name="SomeProperty" column="SomeColumn" />
</hibernate-mapping>

Удачи

...