1

UserPOエンティティにこのマッピングがあります:

@ElementCollection
@JoinTable(name = "role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "department") })
@MapKeyJoinColumn(name = "mission")
private Map<MissionPO, DepartmentListPO> departmentsByMission = new HashMap<MissionPO, DepartmentListPO>();

Map<MissionPO, List<DepartmentPO>>Hibernate(またはJPA)のオプションではないように思われるため、DepartmentListテーブルとDepartmentListPOテーブルを使用します。

これまでのところ、ユーザーには部門のリストに限定されたミッションを与えることができます。

例:トムは部門10と11にミッション1を持っています

私の問題は、ミッションを削除した場合:

departmentsByMission.remove(mission)

roleUser / Mission/DepartmentListをリンクした行は削除されません。たくさんのスレッドを読んだのですが、で一括削除できないようElementCollectionです。

ON CASCADE DELETEDepartmentList外部キーのロールテーブルに制約を使用しようとしましたが、これは私が望むものの逆のようです。DepartmentListを削除すると、ロールが削除されます。

だから私がしたいのはentityManager.remove(departmentList)removeMission方法のようなことをすることactorです。

残念ながら、エンティティPersistentContextに入れることはできないようです。User

したがって、データベーストリガーを回避したいので、解決策がどうなるか少し混乱しています。

解決策をありがとう、私は本当にそこに立ち往生しています。

4

1 に答える 1

1

この問題は、ORM、休止状態、または JPA の問題ではなく、データ モデルが原因であると思います。私の経験からすると、これは型にはまらないアプローチのように思えます。

ミッションは、エンティティとしても存在する部門プロパティを含む独自のエンティティである可能性があります。ミッションのマップを作成するときは、データベースの代理キーをマップのキーとして使用すると便利です。マップする必要がある追加のエンティティがないか、時間をかけてデータ モデルを確認することをお勧めします。

于 2012-12-05T14:46:33.700 に答える