🍇
JPAの@ManyToOneとは
@ManyToOne(多対一)
| 属性 | 説明 | ディフォルト値 |
|---|---|---|
| optional | falseに設定すると連関関係であるエンティティが常にある必要がある。 | true |
| fetch | fetch戦略を決める | FetchType.EAGER |
| cascade | persistenceの遷移機能 | |
| targetEntity | type情報を設定する、ほとんど使わない |
@ManyToOne片方向
- 一番多く使われてるリレーショナルマッピング
-
ManyToOneの反対はOneToMany -
Memberが多(Many)でTeamが一(One)の関係 - 多(Many)から外来キー(FK)を管理する。
Member.java
@Entity
@Table(name = "member")
@Getter @Setter
public class Member {
@Id
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "team_id") // FKを管理する
private Team team;
}
- 片方向なので
Team側にはmappedByとか何もついてない
Team.java
@Entity
public class Team {
@Id
private Long id;
private String name;
}
@ManyToOne両方向

- FKがある所がリレーションのオーナーになる
- オブジェクトをお互い参照させて開発する時使う
- オーナーではない反対側は
readOnly(読み取り専用)になる。
Member.java
@Entity // JPAが管理するオブジェクト
@Table(name = "member")
@Getter @Setter
public class Member {
@Id
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
}
Team.java
@Entity
public class Team {
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
}
(次)@OneToMany
Discussion