片方向OneToOneのEntity

クラス定義概略

../../_images/class_one_to_one.png
  • 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

子エンティティの永続化では、親エンティティは永続化されない。
(親子の関連が読み取れない)