Posso pigro caricare le associazioni uno a molti e molti a uno, ma non posso con le associazioni molti-a-molti.Come caricare pigro una raccolta many-to-many in modalità ibernazione?
Noi abbiamo una città in wich abbiamo mercanti wich avere indirizzi. I commercianti possono avere più indirizzi e più commercianti possono avere gli stessi indirizzi.
Quando carichiamo un commerciante con un get,
Merchant merchant = (Merchant) hib_session.get(Merchant.class, id);
System.out.println(merchant.getName());
è ok, gli indirizzi non vengono caricati fino a quando abbiamo scorrere su di loro.
Ma quando carichiamo un elenco di commercianti,
City city = (City) hib_session.get(City.class, city_name);
for(Merchant merchant : city.getMerchants()) {
System.out.println(merchant.getName());
}
anche se non otteniamo gli indirizzi, ibernazione automaticamente li carica.
Here's an example of my problem.
La mappatura:
<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>
Tutte le idee?
sembra strano. Potresti confermare il comportamento? Come sono mappate le tue collezioni? – Bozho
@Bozho Posso confermare il comportamento registrando le query e vedo che Hibernate carica gli indirizzi. Ho aggiunto i mapping nella domanda. – codea
Questo non è l'argomento, ma non dovrebbe essere una delle relazioni molti-a-molti contrassegnate con l'inverso? – Ralph