結合テーブルを使用してモデル化された1対多の関係があります。
create table t1 (id int primary key, name varchar(10) /*...*/);
create table t2 (id int primary key, name varchar(10) /*...*/);
create table t1_t2 (t1_id int, t2_id int, primary key (t1, t2));
テーブルは、1つのt1と多くのt2の関係をモデル化することになっています。 JPAを使用してこれらのテーブルをモデル化する正しい方法は何ですか?
1つのT1から多数のT2の一般的なテーブルは、T2にT1を指す外部キーを持つことです。 T1_T2テーブルは通常必要ありません。
JPA構造は、1対多、場合によっては双方向になります。
記述した構造を機能させるために、いくつかの調整があります。 T1_T2を変更できます。
それは本当にあなたが望むものですか?
編集済み:はい、それはあなたが望むものです;-)
ネット上で多くの例を見つけることができるとは思わない。証明された解決策はありませんが、これらの線に沿って何かを試します:
Hibernateアノテーションリファレンスドキュメント で、「2.2.5.3.2.3。結合テーブルを使用した単方向」を参照してアイデアを取得してください。次のようになります。
@Entity
public class Trainer {
@OneToMany
@JoinTable(
name="TrainedMonkeys",
joinColumns = @JoinColumn( name="trainer_id"),
inverseJoinColumns = @JoinColumn( name="monkey_id")
)
public Set<Monkey> getTrainedMonkeys() {
...
}