LoginSignup
0
0

More than 3 years have passed since last update.

一対多によるリレーション

Posted at

自分用の備忘録も兼ねて実装にあたり苦労したので投稿します。

概要

  • レストラン(親)は複数のメニュー(子)を持つ関係
  • Java、SpringBootにて一対多によるリレーションを関係するエンティティに記述
  • 親テーブル(@OneToMany)、子テーブル(@ManyToOne)使用

親テーブル

RestaurantsEntity.java
@Entity
@Table(name="restaurants")
public class RestaurantsEntity {

  //各フィールド変数記述 略……

  @OneToMany(mappedBy="restaurantId")
  private List<RestaurantMenuEntity> restaurantMenuEntityList;

  //下記setter/getter 略……    

}

「一対多」の一側のフィールドには、多側のエンティティのコレクションを保持させてます(private List<RestaurantMenuEntity> restaurantMenuEntityList;)。

@OneToManyアノテーションを付与し、mappedByで関連させる多側エンティティのフィールドを指定してます(mappedBy="restaurantId")。

子テーブル

RestaurantMenuEntity.java
@Table(name="restaurantMenu")
public class RestaurantMenuEntity {

  //各フィールド変数記述 略……

     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "restaurantId")
     private RestaurantMenuEntity restaurantId;

  //下記setter/getter 略……    

}

「多対一」の多側のフィールドには、一側のエンティティを保持させてます(private RestaurantMenuEntity restaurantId;)。

@ManyToOneアノテーションを付与することで、リレーションシップを定義しています。

nameで関連テーブルを結合させるために使用するカラム名を指定してます(name = "restaurantId")。

あとがき

まだまだ全てを理解できているわけではありませんが、ひとまず実装できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0