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);

} 

Ваша помощь очень ценится...

0 ответов

Другие вопросы по тегам