###################################### 双方向OneToOneのEntity ###################################### クラス定義概略 ============================ .. image:: ./Images/class_one_to_one.png :scale: 50% - 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; // 自分自身をthis.locker.employerにset // + this.lockerにlockerエンティティをaddするメソッド public void add(locker l){-略-} :: 【Lockerエンティティの定義】 @id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "locker_no") Integer lockerNo; @Column(name = "abstract") String abstract; @OneToOne(mappedBy = "locker", cascade = CascadeType.ALL) private Employer employer; 実行例 ============================ 割愛 .. note:: | 親エンティティ、子エンティティどちらをpersistしても、双方ともにInsertされる | CascadeType.ALLを設定していないと、エラーとなる。 | - org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing