2

私はMysqlを使用しています。そして、私は互いに1対1で関連している2つのテーブルを持っています。

つまり、どちらにも、他のテーブルの主キーを参照する外部キー制約があります。

テーブルごとに1つのレコードを挿入しようとすると、各レコードは他のレコードを参照します。お気に入り:

Mysqlデータベースは、1対1の外部キー制約があるため、このような操作を防ぎます。

それは鶏が先か卵が先かという問題のようなものです。

ただし、Java休止状態では、2つのエンティティクラスが1対1に関連している場合に、このような操作を実行できることに気付きました。

(Hibernateデバッグメッセージからの)2つの挿入が私が行ったように分離されていることに気付いたので、Hibernateでそれをどのように行うことができますか?したがって、特別なことは何もありません。

または、参照する必要のあるレコードがまだ存在しない場合でも、1つのレコードを強制的に挿入するにはどうすればよいですか?

4

2 に答える 2

3

参照される列の1つにnull値を入力すると、ref列はnull値を許可します。後で、参照される列にレコードを挿入すると、列を更新できます。

于 2011-07-23T11:55:59.280 に答える
1

SET foreign_key_checks = 02つの挿入クエリの直前に実行して外部キーチェックを無効にし、クエリの直後にを実行して外部キーチェックを有効にすることができますSET foreign_key_checks = 1

外部キー制約に関する詳細情報。

mysql > SET foreign_key_checks = 0;
mysql > INSERT INTO t1 (t2_id) VALUES (1);
mysql > INSERT INTO t2 (t1_id) VALUES (1);
mysql > SET foreign_key_checks = 1;
于 2011-07-23T11:48:18.387 に答える