JPA удаляет запись при обновлении
Может ли кто-нибудь помочь мне в следующем сценарии?
У меня есть требование, когда мне нужно удалить запись членства и дочернюю таблицу, когда ребенок не связан с какой-либо другой родительской записью.. иначе мне просто нужно отделить запись членства.
Я использую ссылку JPA Eclipse...
Ниже приведены мои три сущности. Обратите внимание, что Parent и Child связаны через отношение "многие ко многим" Parent_Child. Я использую таблицу Parent_Child с обеих сторон, так как в ней есть дополнительные столбцы..
// Родительское
@Entity
@Table(name = "PARENT")
public class Parent implements java.io.Serializable {
@Id
@Column(name = "parent_id")
private String parentId;
private Set<ParentChild> parentChildSet = new HashSet<ParentChild>(0);
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent")
public Set<ParentChild> getParentChildSet() {
return parentChildSet;
}
public void setParentChildSet(Set<ParentChild> parentChildSet) {
this.parentChildSet = parentChildSet;
}
}
// Детский
@Entity
@Table(name = "CHILD")
public class Child implements java.io.Serializable {
private String ChildId;
private Set<ParentChild> parentChildSet = new HashSet<ParentChild>(0);
@Id
@Column(name = "child_id")
public String getChildId() {
return ChildId;
}
public void setChildId(String childId) {
ChildId = childId;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "child")
public Set<ParentChild> getParentChildSet() {
return parentChildSet;
}
public void setParentChildSet(Set<ParentChild> parentChildSet) {
this.parentChildSet = parentChildSet;
}
}
// Родитель-Ребенок
@Entity
@Table(name = "PARENT_CHILD")
public class ParentChild implements java.io.Serializable{
private String parentChildId;
private Parent parent;
private Child child;
@Id
@Column(name = "parent_child_id")
public String getParentChildId() {
return parentChildId;
}
public void setParentChildId(String parentChildId) {
this.parentChildId = parentChildId;
}
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
}
Отношения: Родитель - Praent_Child (один ко многим) Ребенок - Parent_Child (один ко многим)
Я пытаюсь сделать это, как показано ниже... но, это дает мне исключение ограничения целостности, так как я удаляю ребенка, а затем обновляю родителя
public void ParentChildServiceDAO{
........
.........
if(parentChildSet().size() > 1){
parent.getParentChildSet().remove(parentChildRecord);
child.getParentChildSet().remove(parentChildRecord);
} else{
parent.getParentChildSet().remove(parentChildRecord);
child.getParentChildSet().remove(parentChildRecord);
getJpaTemplate().remove(child);
}
update(parent);
}
Ваша помощь очень ценится...