Вот мой кодJPA - Invalid дубликат вставки
@Entity
class Parent extends Person {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true, mappedBy = "father")
private List<Child> children;
// ...
public void addChild(Child c) {
children.add(c);
}
}
@Entity
class Child extends Person {
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "id")
private Parent father;
public Child() {
this(NoParent.getInstance());//
}
public Child(Parent p) {
super();
setParent(p);
}
// ...
}
@MappedSuperclass
class Person {
@Id
private Integer id;
private String name;
}
class MyParentService {
public void addChild(String name, Parent parent) {
Child c = new Child(parent);
c.setName(name);
parent.addChild(c);
em.getTransaction.begin();
em.merge(parent);
em.getTransaction.commit();// Here two children with same name but different ids are created ...
}
}
Каждый раз, когда я запускаю его, двое детей добавляются в базу данных, а я просто хочу один!
Что я делаю неправильно?
Java 6
JPA 2
Hibernate 3.6.8.GA
Можете ли вы добавить код для конструктора Child, который получает родительский элемент, а также метод addChild для родителя? – jpkrohling
@partenon Я обновил свой код с помощью кода конструктора и метода. – Stephan
Можете ли вы добавить код для setParent of Child? Если в этом есть вызов addChild of Parent, новый ребенок будет добавлен дважды. – Gandalf