У меня есть модель:
@Entity
class A {
@ManyToOne
B b;
int i;
}
@Entity
class B {
@OneToMany(mappedBy="b")
List< A > list = new ArrayList< A >();
}
Теперь в моей службе EJB я делаю:
void f(Aid,Bid){
A a = em.find(A.class, Aid);
B b = em.find(B.class, Bid);
a.setB(b);
}
Это исключение ограничения БД (ВСТАВЬТЕ В ЗНАЧЕНИЯ B... С ЖЕ ЗНАЧЕНИЯМИ, КОТОРЫЕ УЖЕ СУЩЕСТВУЮТ В ТЕКУЩЕМ B).
- Почему он пытается вставить новую запись в B, в то время как она уже существует в таблице B, и связь не сохраняется?
ПРИМЕЧАНИЯ:
1 Когда я делаю после последней строки:
em.merge(a);
Это тоже работа...???
2 Когда я делаю a.setI(1)
; без слияния - это изменено в БД (как я и думал)
СПАСИБО!!!