Tôi có thể tải các liên kết một-nhiều và nhiều người một cách lười biếng nhưng tôi không thể kết hợp với nhiều liên kết.Làm thế nào để lười biếng tải một bộ sưu tập nhiều-nhiều trong hibernate?
Chúng tôi có một thành phố mà chúng tôi có các thương gia có địa chỉ. Người bán có thể có nhiều địa chỉ và nhiều người bán có thể có cùng địa chỉ.
Khi chúng ta nạp một thương gia với một get,
Merchant merchant = (Merchant) hib_session.get(Merchant.class, id);
System.out.println(merchant.getName());
đó là ok, địa chỉ không được nạp cho đến khi chúng ta lặp qua chúng.
Nhưng khi chúng ta tải một danh sách các thương gia,
City city = (City) hib_session.get(City.class, city_name);
for(Merchant merchant : city.getMerchants()) {
System.out.println(merchant.getName());
}
thậm chí nếu chúng ta không có được địa chỉ, hibernate sẽ tự động tải chúng.
Here's an example of my problem.
Các bản đồ:
<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>
Bất kỳ ý tưởng?
nghe có vẻ lạ. Bạn có thể xác nhận hành vi không? Bộ sưu tập của bạn được ánh xạ như thế nào? – Bozho
@Bozho Tôi có thể xác nhận hành vi bằng cách ghi lại các truy vấn và tôi thấy rằng Hibernate tải các địa chỉ. Tôi đã thêm ánh xạ vào câu hỏi. – codea
Đó không phải là chủ đề, nhưng không phải là một trong những mối quan hệ nhiều-nhiều được đánh dấu nghịch đảo? – Ralph