Entityの関連定義
@OneToMany(cascade = {CascadeType.ALL}) public List<Tel> getTels() { return tels; }
テーブル定義
上のEntityの関連定義だと下のようなテーブル構造となります。中間テーブルのテーブル名やカラム名を変更したい場合には、OneToManyとセットでJoinTableアノテーションを定義して任意の値に変更します。
どうしても過去の資産などを使わないとダメな場合なので中間テーブルを使えない場合には、OneToManyとセットでJoinColumnを定義してあげる。JoinColumnのname属性には、子供側テーブルの外部キーとなる項目名を定義します。
Entityを次のように変更すると、Userテーブルの子テーブルのTelテーブルにはUserテーブルを参照するための外部キー(user_id)が作成される。
@OneToMany(cascade = {CascadeType.ALL}) @JoinColumn(name = "user_id") public List<Tel> getTels() { return tels; }
テーブル定義は次のようになります。