0

親と子の 2 つの Java オブジェクトがあるとします。それらの間の関係はChild -> Parent = many-to-oneです。つまり、複数の Child オブジェクトを同じ Parent に関連付けることができます。

子オブジェクトはその親への参照を保持していますが、親オブジェクトにはその子をアドレス指定するフィールドがありません。

Hibernate では、Child マッピングに多対1 の要素が含まれます。親オブジェクトがすべての子オブジェクトを参照するコレクション フィールドを持つ必要がないため、親のマッピングには1対多のエントリは含まれません。

現在、親が削除されると、Oracle はエンティティを参照している子エンティティがある間はエンティティを削除できないという例外をスローします。

このオブジェクト モデルでは、親オブジェクトが削除されたときに、親オブジェクトに属するすべての子オブジェクトを段階的に削除する方法はありますか?

4

2 に答える 2

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 と呼ばれる 2 番目のクラスを検討する

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を変更するだけで、例外はスローされません

于 2013-05-24T12:42:08.650 に答える
1

1>子<-->親への双方向マッピングを作成します。カスケード削除について言及します。

2> この親の子オブジェクトが誰であるかを知っている場合、最初にこの親のすべての子を削除してから、親を削除しようとします。

編集:

この例のリンクを確認してください

ハイバネート双方向の例

于 2013-05-24T11:40:37.330 に答える