1対1のマッピングを持つ2つのエンティティプラグアンドソケットがあります。Hibernateと1対1の関係を変更する関係をモデル化する方法
プラグは、プラグインされているソケットと外部キーの関係にあります。
Hibernateは、一対一の関係を保証するために、外部キーに一意の制約を生成します。
10個のプラグに10個のプラグが差し込まれています。
しばらくすると、アレンジの変更についてシステムに通知するアップデートが届きます。
socketAにプラグインされたplugAがSocketBにプラグインされ、socketBにプラグインされたplugBがsocketAにプラグインされるシナリオです。
更新を実行すると、hibernateはプラグインの外部キー列をSocketBに更新しようとします。その結果、一意制約に違反します。これは、plugBとsocketBの関係がまだ変更されていないためです。
関係をモデル化する最も正しい方法は何ですか?
更新全体が単一のトランザクションとして発生する必要があることに注意してください。
これはコード
@OneToOne(mappedBy="socket")
public Plug getPlug()
{
return plug;
}
中栓 @OneToOne(任意=偽) 公共ソケットgetSocket(){ 戻りソケット
ソケットの内側にあります。 }
なぜあなたはそれを何かするのですか?ソケットの多くのプラグ – kommradHomer