2つのエンティティがあります。
public class User {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", insertable = true, updatable = true)
@ElementList(name = "tabledata")
public List<MyUserTableData> tableData = new ArrayList<MyUserTableData>();
}
public class MyUserTableData {
public Long user_id;
}
私が行うアクションは、u.tableDataからエントリを削除してから、EntityManagerを呼び出してmerge(u)することです。
OpenJPAは、MyUserTableDataの対応するレコードにuser_id = "null"を設定することにより、Userオブジェクトからエントリーを削除します。
しかし、私が欲しいのは、エントリがユーザーから削除された場合、列user_idをNULLにするだけでなく、MyUserTableDataからレコードも削除する必要があるということです。
列にnullを入力する代わりに、OpenJPAにOneToMany関連のエントリを削除させるにはどうすればよいですか?
データベーススキーマが不良であると想定する回答は受け付けません:)テーブルMyUserTableDataは基本的に、ユーザーを別のエンティティに接続する外部キーテーブルですが、外部キーよりも多くの情報を保持し、メタデータを追加します。ユーザーにも他のエンティティにも属していない外部キー。
ありがとう!
セバスチャン