2つのエンティティがあり、次のJPAアノテーションが付いています。
@Entity
@Table(name = "Owner")
public class Owner implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@OneToOne(fetch=FetchType.EAGER , cascade=CascadeType.ALL)
@JoinColumn(name="Data_id")
private Data Data;
}
@Entity
@Table(name = "Data")
public class Data implements Serializable
{
@Id
private long id;
}
所有者とデータには1対1のマッピングがあり、所有側は所有者です。実行すると問題が発生します:owner.setData(null); ownerDao.update(owner) ; 「Owner」テーブルのData_idがnullになります。これは正しいです。
ただし、「データ」行は自動的に削除されません。別のDataDaoと、2つのアクションをラップする別のサービスレイヤーを作成する必要があります(ownerDao.update(owner); dataDao.delete(data);)
所有する所有者がデータ行をnullに設定したときに、データ行を自動的に削除することはできますか?