7
@Entity
public class Troop {
@OneToMany(mappedBy="troop")
public Set<Soldier> getSoldiers() {
...
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk")
public Troop getTroop() {
...
}
私はこの上の文書に苦しんでいます:Hibernateでの関係所有者の意味は何ですか?
Troop has a bidirectional one to many relationship with Soldier through the troop property. You don't have to (must not) define any physical mapping in the mappedBy side.
したがって、たとえば次のコード:
Troup t = new Troup();
t.getSoldiers().add(soldier);
を私はちょうどsession.saveOrUpdate(t)
を呼び出した場合、私はちょうど呼び出された場合の違いは何だろう session.saveOrUpdate(s)
? MappedByはtroupを所有者として定義しますが、具体的にはどういう意味ですか?私は兵士のオブジェクトを保存すると、必ずtroop_fk列が正しく保存されることを期待していますか?そして、私がtroupオブジェクトを保存するだけであれば、兵士の外部キーは必ずカスケード時に正しく更新されますか?私は本当に違いを見ることができません。
詳細については、セクション2.2.5.3.1.1を参照してください。 http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-associationを参照してください。上記の例では、あるエンティティから別のエンティティへの所有権を切り替える方法についての情報があります。 –
カスケードと所有者=部隊、INSERT INTO兵士(...、troop_fk)VALUES(...、NULL)。兵士のテーブルtoop_fkがnullableでない場合、クエリの実行中にthowエラーが冬眠します。開発者はそれを処理しなければなりませんか? –
カラムがヌル可能でない場合は、単純に "カスケーディングとオーナー= – Firo