私のデータベースのスキルは少し錆びているので、Hibernate を学ぶのは少し難しいです。
私は 1 対 1、1 対多、多対多について読んできましたが、一言で言えば、これは私が若い頃から理解していることです。
1 対 1: - テーブル A はテーブル B の別の行にリンクされており、テーブル A の行数はテーブル B の行数と等しくなければなりません。
一対多: - 各企業は多数の従業員を持つことができます。
多対多: - 多くの医師がさまざまな患者を担当/共有できます。(しゃれは意図されていません)。
アンダーテイカークライアントモデル用に、次のテーブルがあるとしましょう
テーブルパーソン:
[id[pk]、fullname(char)、age(int)、address(char)、sendFlowers(boolean)、country_id[fk]、whenDead_id[fk]]
1, 'Martin Jensen', 91, 'Notlucky Street 4', false, 2, 1
2、「Killer Klaus」、67、「Die-Hard Strasse 9」、true、1、2
2、「ビンゴマン」、46、「シークレットアドレス」、true、1、2
表: 国
[id[pk]、名前(文字)]
1、「ドイツ」
2、「北朝鮮」
表: WhenDead
[ id[pk], actionToTake(char) ]
1、「無視・受け取り不可」
2、「火葬・身内をまねて保険金を集める」
通常の状況では、これらのテーブルからの情報が必要な場合は、単純な SQL を使用して 2 つの外部キーへの結合を使用するだけです。(id だけでなく、説明も参照してください)。各人は 1 つの国と 1 つの WhenDead テーブルにしか接続できませんが、重複を避けるために、もちろん複数の人が同じ外部キー値を参照できる必要があります。
これらの両方のテーブルの列名をエンティティの外部キー ID として、Hibernate で @OneToOne アノテーションを使用しようとしました。それは機能しますが、OneToOneの略に反するようです...「テーブルの各行には別のテーブルの対応する行がある」および「行の数は両方のテーブルで一致する必要があります」。
一対多または多対多を使用するのは不自然に思えます。
誰かが私を正しい方向に押し進めることができますか、それとも OneToOne を続行するべきでしょうか。