より説明的なマッピングから始めましょう。後でパーツを削除できますが、いずれにせよデフォルトとして解放されます。
私の抜粋よりも詳細な説明があります。ぜひご覧ください:
http://viralpatel.net/blogs/hibernate-one-to-one-mapping-tutorial-using-annotation/
それに基づいて、マッピングを次のように拡張しましょう。
ドライバ
public class Driver {
@Id
@GeneratedValue
@Column(name="driver_id")
private Long driverId;
// cascade will do the job for us
@OneToOne(mappedBy="driver", cascade=CascadeType.ALL)
private License license;
ライセンス
public class License {
@Id
@Column(name="driver_id", unique=true, nullable=false)
@GeneratedValue(generator="gen")
@GenericGenerator(name="gen", strategy="foreign"
, parameters=@Parameter(name="property", value="driver"))
private Long driverId;
@OneToOne
@PrimaryKeyJoinColumn
private Driver driver
...
新しい値を挿入するとき、両端を明示的に設定できます。
Driver driver = new Driver();
License license = new License();
// set both ends
license.setDriver(driver);
driver.setLicense(license);
// Just save the Driver. the cascade will do the rest
そして今、Hibernate のカスケード機能が残りの作業を行います