私は問題に少し困惑しており、単純なものが欠けているのではないかと考えています。
私は3つのテーブルを持っています:
create table A (id serial primary key, name char(50));
create table B (id serial primary key, name char(50));
create table c (A int references A(id), B int references b(id));
以下を使用して、A & B 関係が繰り返されないようにします。
create index unique_a_b_in_c on c (A,B);
次に、休止状態を使用して、これらのファイルを Java オブジェクトにリバース エンジニアリングします。
ここまでは順調ですが、ここでやりたいことは、A の各インスタンスが B レコードの一意の組み合わせを持つようにすることです。(たとえば、B に 2 つのレコード (B1 と B2) がある場合、A レコードの可能な値は 4 つだけです。つまり、レコードなし、B1 レコード、B2 レコード、または B1 と B2 レコードです。 )
これまでの私の最善の試みは、レコードに属するタイプ B レコードに基づいて A に一意のハッシュコードを作成し、equals をオーバーライドして A の B レコードのコレクションの内容をチェックすることです。オブジェクトが等しい場合は A レコードを更新しますが、A レコードが新しい場合は保存できます。
明らかに、これは equals の重いプロセスであり、B のサイズが大きくなるにつれて、一致をチェックする際の処理時間が膨大になります。
私の現在の考えでは、この種の一意性を提供する試みを放棄し、重複を許可することです。ただし、A は構成元の B レコードの組み合わせによって実際に定義されるため、私の問題のコンテキストでは意味がありません。
これを解決する方法について考えている人はいますか?
どうもありがとう !