У меня проблема при попытке обновить внешние ключи. Использования функции слияния Я всегда получаю аут ошибки памяти, или я получаю тайм-аутentitymanager persist
Fakultaet и Standort внешние ключей в таблице Raum (многие к одному, и ленивая выборка) Raum делает нетерпеливыми выборки для Fakultaet и Standort
@Stateless
@Local (IRaumHomeLocal.class)
@Remote (IRaumHomeRemote.class)
public class RaumHome implements IRaumHome {
@PersistenceContext private EntityManager em;
void merge(Raum r, Integer fid, Integer sid) {
Fakultaet f = em.find(Fakultaet.class, fid);
Standort s = em.find(Standort.class, sid);
r.setFakultaet(f);
r.setStandort(s);
f.getRaums().add(r);
s.getRaums().add(r);
em.merge(r);
}
....
}
затем я попытался с помощью getReference() вместо находку(), так как я только хочу, чтобы сделать обновление, поэтому у меня есть метод:
void merge(Raum r, Integer fid, Integer sid) {
Standort s = em.getReference(Standort.class, sid);
Fakultaet f = em.getReference(Fakultaet.class, fid);
s.getRaums().add(r); // now it lags here
f.getRaums().add(r);
em.merge(r);
}
еще не Worki ng
После этого я удалил s.getRaums(). add (r) и f.getRaums(). add (r) lines , но это вызывает исключение LazyInitializationException в следующем запросе, который мне нужно сделать.
все, что я хочу что-то вроде этого:
UPDATE Raum SET FakultaetId = ?, StandortId = ? WHERE RaumID = ?
что я делаю не так? есть ли лучший способ сделать это?