У меня есть сущность Account и сущность AccountTransaction.
Аккаунт 1 <----> n AccountTransaction
В моем AccountTransaction.hbm.xml я указываю отношение многие-к-одному:
<hibernate-mapping>
<class name="com.walshk.accountmanager.domain.AccountTransaction" table="AccountTransaction">
<id name="id" type="long" column="transaction_id">
<generator class="increment"/>
</id>
<property name="date" not-null="true" type="date" column="transaction_date"/>
<property name="description" not-null="true" column="transaction_description" length="500"/>
<property name="amount" column="transaction_amount" not-null="true"/>
<many-to-one name="account" column="account_id" not-null="true" cascade="all" lazy="false"/>
</class>
</hibernate-mapping>
Это позволяетя могу искать AccountTransactions по учетной записи, используя
Criteria criteria = session.createCriteria(AccountTransaction.class)
.add(Restrictions.eq("account", account));
, а также позволяет мне получить экземпляр Account с помощью AccountTransaction # getAccount ();
Теперь я хочу предоставить способ получитьучетная запись, например
Criteria criteria = session.createCriteria(Account.class).add(Restrictions.eq("id", id));
Но я также хочу, чтобы у сущности Account был метод
List<AccountTransaction> getTransactions();
И я хочу, чтобы он загружался лениво, поскольку мне даже не нужно перечислятьтранзакции.
Поскольку я уже определяю отношение «многие-к-одному» из AccountTransaction, как мне теперь указать отношение «один ко многим», предоставляя мне доступ с другого направления.
Кроме того, каков наилучший способ обработки отложенной загрузки, нужно ли назначать сеанс каждому объекту, а не закрывать сеанс?Я потенциально могу открыть слишком много сессий.
Спасибо.