JPA,@OneToManyにmappedBy属性を加えて中間テーブルの生成を避ける
2079 ワード
JPAを使用する場合、A Bの2つのエンティティ間が1対多、多対一の関係である場合、@OneToManyにmappedByプロパティを追加しないと、余分な中間テーブルが自動的に生成されます.例:
このように書くと、テーブルAとテーブルBが生成され、BにはテーブルAへの外部キーが1つしか生成されません.ただしmappedBy="a"を付けないと、もう1枚A_が生成されますB表
@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表