0

假设我有 2 个 Java 对象:Parent 和 Child。它们之间的关系是Child -> Parent = 多对一,即多个 Child 对象可以与同一个 Parent 关联。

Child 对象持有对其 Parent 的引用,而 Parent 对象没有用于寻址其 Children 的字段。

在 Hibernate 中,这导致在 Child 映射中具有多对一元素;Parent 的映射不包含一对多条目,因为 Parent 对象不需要有一个集合字段来引用其所有 Child 对象。

现在,当删除 Parent 时,Oracle 会抛出一个异常,即当有子实体引用它时,无法删除该实体。

使用这个对象模型,当后者被删除时,有没有办法级联删除属于父对象的所有子对象?

4

2 回答 2

1

1> 对 Child <--> parent 进行双向映射。提到级联删除。

2>你知道谁是这个父级的子对象,先删除这个父级的所有子级,然后尝试删除父级。

编辑:

检查此示例链接

Hibernate 双向示例

于 2013-05-24T11:40:37.330 回答
1

班级家长

import java.util.Set;  

    import javax.persistence.*;  

    @Entity  
    @Table(name = "Parent")  
    public class Parent{  

        @Id  
        @GeneratedValue  
        private Integer id;  

        private String name;  

        @OneToMany(mappedBy="Child", cascade=CascadeType.ALL)  
        private Set<Child> child;  
}

考虑第二类称为孩子

导入 javax.persistence.*;

@Entity  
@Table(name = "Child")  
public class Child{  

    @Id  
    @GeneratedValue  
    private Integer id;  

    private String lastname;  

    @ManyToOne  
    @JoinColumn(name = "id")  
    private Parent parent;  
}

只需相应地更改您的 POJO,它就不会抛出异常

于 2013-05-24T12:42:08.650 回答