質問
2つのテーブルがあります:
A
s_id(key) name cli type
B
sa_id(key) s_id user pwd
JPA 私が持っている:
@Entity
class A...{
@OneToMany(fetch=FetchType.EAGER)
@JoinTable( name="A_B",
joinColumns={@JoinColumn(name="a_id", table="a",unique=false)},
inverseJoinColumns={@JoinColumn(name="b_id", table="b", unique=true)} )
Collection<B> getB(){...}
}
クラスbは、Aへの参照を持たない基本的なエンティティクラスです。
うまくいけば、それは明らかです。私の質問は次のとおりです。このような単純な結合を行うには、結合テーブルが本当に必要ですか?これは、単純な結合列などで実行できませんか?
解決
これにはJoinTableは必要ありません。クラスBがクラスAへの参照を持たない場合、次で十分です
@Entity class A...{
@OneToMany(fetch=FetchType.EAGER)
Collection getB(){...} }
ほとんどの場合、BがAへの参照を持つ双方向関係が必要になる場合があります。その場合、@ mappedByアノテーションを検索する必要があります。ポールが言及しました。
他のヒント
いいえ、OneToManyの結合テーブルは必要ありません。 @mappedBy注釈を見てください
簡単な答えは、多対多の関係がある場合、別のテーブルが必要になるということです。 1対多または多対1の関係がある場合は、そうしません。
所属していません StackOverflow