Сохранение объектов с предопределенными идентификаторами в Hibernate - PullRequest
1 голос
/ 11 февраля 2011

Я немного запутался, как 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 в пустой базе данных, это такая трата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...