Ich wollte eine einfache Eltern-Kind-Beziehung zuordnen.Hibernate - Persistente Sammlung von @ OneToMany-Entitäten
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "mother")
public Set<User> getChildren() {
return children;
}
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "MOTHER_ID")
public User getMother() {
return this.mother;
}
Testfall:
@Test
public void t4adopt() {
User ewa = session.find(User.class, 1L);
User user = new User("abel", "[email protected]");
session.persist(user);
ewa.getChildren().add(user);
System.out.println("save eva's children");
session.saveOrUpdate(ewa);
//session.save(user);
session.flush();
System.out.println("4. " + ewa);
session.refresh(user);
System.out.println("5. " + user);
}
@Before
public void start() {
session.getTransaction().begin();
}
@After
public void close() {
session.getTransaction().commit();
session.close();
}
Hibernate hat zuweisen nicht Mutter ID in untergeordneter Entität.
5. User [idUser=3, mother=null, [email protected], name=null, surname=null, userGroups=[], userLogin=abel]
Wenn ich Kind direkt der Mutter zuweisen, funktioniert es.
User user = new User("kain", "[email protected]");
User ewa = session.find(User.class, 1L);
user.setMother(ewa);
session.persist(user); //ok
Ohne mappedBy Hibernate werden separate Tabelle erstellen bezogene Benutzer Änderungen id.With mappedBy Hibernte nicht verfolgen auf die Mutter der Kinder gemacht zu speichern. Es gibt also keine Möglichkeit, es wie erwartet funktionieren zu lassen, es gibt keine Möglichkeit, Hibernate mitzuteilen, dass "MOTHER_ID Filed verwendet wird, um Änderungen statt einer separaten Tabelle zu verfolgen"? – Damian