JPA,@OneToManyにmappedBy属性を加えて中間テーブルの生成を避ける

2079 ワード

JPAを使用する場合、A Bの2つのエンティティ間が1対多、多対一の関係である場合、@OneToManyにmappedByプロパティを追加しないと、余分な中間テーブルが自動的に生成されます.例:
@Entity
public class A {
    @OneToMany(mappedBy="a")
    public Set<B> bs = new HashSet<B>(0);
}
 
@Entity
public class B {
    @ManyToOne
    public A a;
}

このように書くと、テーブルAとテーブルBが生成され、BにはテーブルAへの外部キーが1つしか生成されません.ただしmappedBy="a"を付けないと、もう1枚A_が生成されますB表