[Java lista] Spring/Eclipselink - izolációs szintek
Mariák Kálmán
sirkalmi at kalmiesemese.hu
2011. Feb. 8., K, 21:05:59 CET
On Tue, 2011-02-08 at 20:21 +0100, Auth Gábor wrote:
> Hja, ha mindkét oldalon van set, akkor neked kell kezelni mindkét
> bean
> esetén... eddig csak az egyik oldalon állítottad be. Csoda nem fog
> történni,
> hogy beállítódjön mindkettő bean-ben. :)
No de a persist-ek után egy findById metódussal (JPQL) olvasom újra ki
az entitást.
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.
em.persist(user); Letárolja a user-t.
em.persist(userExtension); Letárolja a userExtension-t.
user.setExtension(userExtension); Ez a sor milyen hatással van a későbbi
JPQL lekérdezésre??
Az első osztályban meghívott userDao.findUserById metódus tartlama:
@Override
public User findUserById(Long id) {
Query q = em.createQuery("SELECT u FROM User u WHERE u.id = :id");
q.setParameter("id", id);
try {
return (User) q.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
> Beállítottad valahol, hogy userExtension.setUser(user), aztán később
> lekérdezed, hogy user.getExtension(). Ez honnan kap értéket? Hogy van
> annotálva a két bean?
A kapcsoalt így van deklarálva:
User:
@OneToOne(mappedBy = "user")
private UserExtension extension;
UserExtension:
@OneToOne
@JoinColumn(name = "ID_USER")
private User user;
További információk a(z) Javalist levelezőlistáról