4

クラスの親を検討してください:

{
    ...
    @OneToMany(cascade=CascadeType.ALL,mappedBy = "parent")
    Set<Child> children;
    ...
}

そしてクラス子:

{
    ...
    @ManyToOne
    @JoinColumn(name="parentID")
    Parent parent;
    ...
}

アプリケーション内で新しい子を作成し、それを Parent のchildrenフィールド内に配置してから、Parent オブジェクトを永続化すると、Hibernate が ( parentID列を設定するために) Child の親フィールドを自動的に更新しないのはなぜですか?物体?

4

1 に答える 1

3

Hibernate は魔法のツールではないためです。これは、ユーザーが設計して作成する POJO を使用するように設計されており、それらの POJO のバイトコードを変更しません。必要に応じて、関連付けの反対側を初期化するのはあなたの責任です。

もう 1 つの理由は、JPA 仕様が尊重しなければならない方法で、その動作方法を指定していることです。

しかし、メソッドを持つことを妨げるものは何もありません

public void addChild(Child c) {
    this.children.add(c);
    c.parent = this;
}
于 2016-04-02T15:26:58.573 に答える