cod*_*dea 12 java many-to-many hibernate lazy-loading
我可以懒惰加载一对多和多对一的关联,但我不能与多对多关联.
我们有一个城市,我们有商人有地址.商家可以拥有多个地址,多个商家可以拥有相同的地址.
当我们用get获取商家时,
Merchant merchant = (Merchant) hib_session.get(Merchant.class, id);
System.out.println(merchant.getName());
Run Code Online (Sandbox Code Playgroud)
没关系,在我们遍历它们之前,地址不会加载.
但是当我们加载商家列表时,
City city = (City) hib_session.get(City.class, city_name);
for(Merchant merchant : city.getMerchants()) {
System.out.println(merchant.getName());
}
Run Code Online (Sandbox Code Playgroud)
即使我们没有获取地址,hibernate也会自动加载它们.
映射:
<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>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
归档时间: |
|
查看次数: |
4811 次 |
最近记录: |