JPA和2个简单表

时间:2020-03-06 15:04:42  来源:igfitidea点击:

我有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。

希望这很清楚。我的问题是:我真的需要一个联接表来进行这种简单的联接吗?不能用简单的joincolumn或者其他方式完成此操作吗?

解决方案

不,我们不需要OneToMany的联接表。看看@mappedBy注释

快速的答案是,如果我们具有多对多关系,则将需要另一个表。如果我们具有一对多或者多对一关系,则不会。

我们不需要为此的JoinTable。如果B类没有对A类的引用,则满足以下条件

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

在大多数情况下,尽管我们可能需要双向关系,在这种情况下B引用了A。在这种情况下,我们将需要查找@mappedBy批注。保罗提到的。