2

私は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を参照しない基本的なエンティティクラスです。

うまくいけば、それは明らかです。私の質問は次のとおりです。このような単純な結合を行うには、本当に結合テーブルが必要ですか?これは、単純な結合列などで実行できませんか?

4

3 に答える 3

2

いいえ、OneToManyの結合テーブルは必要ありません。@mappedByannoatationを見てください

于 2008-10-03T14:43:09.403 に答える
1

これには JoinTable は必要ありません。クラス B がクラス A への参照を持たない場合、以下で十分です。

@Entity class A...{ 
@OneToMany(fetch=FetchType.EAGER)     
Collection getB(){...} }

ただし、ほとんどの場合、B が A への参照を持つ双方向の関係が必要になる場合があります。その場合、@mappedBy アノテーションを検索する必要があります。ポールによって言及されました。

于 2008-10-20T14:21:06.727 に答える
0

簡単な答えは、多対多の関係がある場合は、別のテーブルが必要になるということです。1対多または多対1の関係がある場合は、そうではありません。

于 2008-10-03T14:44:38.947 に答える