Я немного запутался, как Hibernate действительно работает при сохранении. Итак, позвольте мне привести примеры, чтобы попытаться прояснить мою путаницу, пример 1:
class A {
@Id
int id;
}
A a = new A();
a.id = 1;
em.persist(a);
Это будет работать объект a будет сохранен с идентификатором 1 .
Пример 2:
class B {
@Id
int id;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "bId")
Set<C> cs;
}
class C {
@Id
int id;
}
B b = new B();
b.id = 2;
C c = new C()
c.id = 3
Set<C> cs = new HashSet<C>();
cs.add(c);
b.cs = cs;
em.persist(b);
Это будет почти работать. Что произойдет, так это то, что a и b сохраняются с правильными идентификаторами 2 и 3 Однако в таблице C bId будет пустым ?! Почему?
Пожалуйста, не говорите, что я должен использовать merge в пустой базе данных, это такая трата.