[Java lista] Spring/Eclipselink - izolációs szintek
Auth Gábor
auth.gabor at javaforum.hu
2011. Feb. 8., K, 21:26:30 CET
Hi,
2011. február 8. 21:05:59 dátummal Mariák Kálmán az alábbiakat írta:
> No de a persist-ek után egy findById metódussal (JPQL) olvasom újra ki
> az entitást.
A user meg is van... a userExtension is megvan. A userExtension össze van
kapcsolva a user-el. A user viszont nincs összekapcsolva a userExtension-el.
:)
Mit csináltál először:
userExtension.setUser(user);
em.persist(user);
em.persist(userExtension);
Másodszor:
userExtension.setUser(user);
em.persist(user);
em.persist(userExtension);
user.setExtension(userExtension);
Az első esetben a user.setExtension(userExtension) nem került meghívásra, az
értéke null lesz. Ha lekérdezed a userExtension értékét, akkor persze, hogy
meglesz, az em.persist nem befolyásolja érdemben az entitás bean-ek tartalmát,
leszámítva az @Id feltöltését.
Nézd meg, mit csináltál:
userExtension.setUser(user);
user.getExtension();
Csoda, hogy null? :)
Második esetben:
userExtension.setUser(user);
user.setExtension(userExtension);
user.getExtension();
Csoda, hogy itt visszakapod a beletett értéket? :)
> userExtension.setUser(user); Ez a sor azért kell, hogy a kapcsolat létre
> tudjon jönni a két entitás között. A user-ből igazából csak a userId
> kell.
Nem, ezzel csak az egyik irányt állítod be. Amikor valamikor később
beolvasod az entitást, akkor lehet, hogy feltölti a JPA mindkét oldalt, de
amikor lemented, akkor neked kell gondoskodni az összerendelésekről.
A findById tipikusan cache-ből tölti be az entitás bean-t, tehát nem fogja
feltölteni a JPA azokat a mezőket, amelyeket nem töltöttél fel.
--
http://www.javaforum.hu -=- http://www.enaplo.hu
Auth Gábor -=- http://www.javaforum.hu/web/10/authgabor
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20110208/002a3880/attachment.html
További információk a(z) Javalist levelezőlistáról