playframework1‎ > ‎jpa‎ > ‎

テーブル間の関係記述

playframework1に限った話ではなくっていますが。。。

jpaではテーブル間の関係もjavaで記述できる。
とりあえずメモ。

1:n の場合

自分1レコードに対し、子nレコードの場合は、@OneToManyアノテーションを使う。
子エンティティを参照するためのコレクション型のプロパティを設け、このプロパティへのアクセスが子エンティティへのアクセスとなる。
public class Parent {
    @OneToMany(mappedBy = "parent")
    public List<Child> children;

}
mappedByを省略すると、ParentテーブルとChildテーブルの関係を保持するための中間テーブルが自動で作成される。
mappedByで子クラスの親参照プロパティを指定すると、中間テーブルは作られない。
中間テーブルは、通常 n:n の場合に必要に迫られて作るので、省略すると中間テーブルが作られるのはちょっと違和感ある。

逆に子クラスが親クラスを参照する時は、@ManyToOneアノテーションを使う。
親エンティティを参照するためのプロパティを設け、このプロパティへのアクセスが親エンティティへのアクセスとなる。
public class Child {
    @ManyToOne
    public Parent parent;

}


参考: