質問

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の関係がある場合は、そうしません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top