這裏是我的代碼JPA - 無效的重複插入
@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
您可以添加接收父級的子構造函數以及父級上的addChild方法的代碼嗎? – jpkrohling
@partenon我用構造函數和方法代碼更新了我的代碼。 – Stephan
你可以添加Child的setParent代碼嗎?如果這包含一個對Parent的addChild的調用,那麼一個新的Child將顯然被添加兩次。 – Gandalf