片方向OneToOneのEntity
クラス定義概略
Employerエンティティ - Lockerエンティティ の、片方向1対1の関係を考える。
【Employerエンティティの定義】
@id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "employer_no")
Integer employerNo;
@Column(name = "name")
String name;
// Lockerのlocker_noを外部キーとする項目を持つ
@OneToOne
@JoinColumn(name = "locker_no")
private Locker locker;
【Lockerエンティティの定義】
@id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "locker_no")
Integer lockerNo;
@Column(name = "abstract")
String abstract;
実行例
var e = Employer.build() -略- .build();
var l = Locker.build() -略- .build();
e.setLocker(l) // Entity間の関連付け
repositoy.save(e) // 親エンティティを永続化
// 親エンティティのInsertにlocker_noが必要であるため、先に子がInsertされる
Insert locker_table(locker_no, abstract) Values -略-
Insert employer_table (employer_no, locker_no) Values -略-
Note
子エンティティの永続化では、親エンティティは永続化されない。
(親子の関連が読み取れない)