Я могу лениться загружать ассоциации один-ко-многим и много-к-одному, но я не могу со многими ассоциациями.
У нас есть город, в котором у нас есть торговцы, у которых есть адреса. Торговцы могут иметь несколько адресов, а несколько продавцов могут иметь одинаковые адреса.
Когда мы загружаем продавца с помощью get,
Merchant merchant = (Merchant) hib_session.get(Merchant.class, id);
System.out.println(merchant.getName());
это нормально, адреса не загружаются, пока мы не перебираем их.
Но когда мы загружаем список продавцов,
City city = (City) hib_session.get(City.class, city_name);
for(Merchant merchant : city.getMerchants()) {
System.out.println(merchant.getName());
}
даже если мы не получаем адреса, спящий режим автоматически загружает их.
Отображение:
<class name="Merchant" table="Merchants" lazy="true">
<id name="id"
type="long"
column="id">
<generator class="native"></generator>
</id>
<set name="addresses" table="AdressesMerchant" lazy="true">
<key column="merchant_id"></key>
<many-to-many class="Adresses" column="address_id"/>
</set>
</class>
<class name="Address" table="Adresses" lazy="true">
<id name="id"
type="long"
column="id">
<generator class="native"></generator>
</id>
<set name="merchants" table="AdressesMerchant" lazy="true">
<key column="adress_id"/>
<many-to-many column="merchant_id" class="Merchant"/>
</set>
</class>
Любые идеи?