Hibernate:级联删除子集合

时间:2013-05-24 11:35:32

标签: java hibernate cascade cascading-deletes

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

一个Child对象持有对其Parent的引用,而Parent对象没有字段来处理其子对象。

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

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

使用这个对象模型,当后者被删除时,有没有办法以casacadely方式删除属于Parent对象的所有Child对象?

2 个答案:

答案 0 :(得分:1)

1>制作双向映射到Child< - >家长。提到级联删除。

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

编辑:

查看此示例链接

Hibernate Bidirectional Example

答案 1 :(得分: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;  
}

考虑名为child的第二类

import 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中进行更改,就不会抛出异常