1

私は冬眠するのが初めてです。これを理解するのを手伝ってください。

Department オブジェクトと Employee オブジェクトがあります。部門には、カスケード型 SAVE の従業員コレクションがあります。部門オブジェクトと従業員オブジェクトを作成しました。たとえば、それぞれ dept1 と emp1 とします。dept1 オブジェクト (emp1 を持つ) を保存すると、dept1 と emp1 が部門テーブルと従業員テーブルに保存されます。外部キーを出力します。

emp1 に department(dept1) を設定していない限り、外部キーは保存されません。なぜ手動で設定する必要があるのですか?それを休止状態にすることはできませんか?そうする理由はありますか?

4

1 に答える 1

4

それは、Hibernate のドキュメントと JPA 仕様がそうするように指示しているからです。双方向の関連付けには、所有者側と逆側があります。mappedBy所有者側は、属性を持たない側です。逆側はmappedBy属性を持つものです。

双方向の OneToMany では、所有者側は常に多側 (外部キーを持つ側) です。

Hibernate/JPA は所有者側のみを考慮します。所有者側を初期化しないと、関連付けが存在しないと見なされます。自分が何をしているのか本当にわかっていない限り、経験則として、関連付けの両側を初期化して、エンティティのグラフを一貫性のあるものにすることをお勧めします。

于 2012-07-22T22:04:20.517 に答える