1
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name="Something", joinColumns=@JoinColumn(name="profile_id"))
@Column(name="favorite")
private Set<String> something = new HashSet<String>();

プロフィールにこの関係があり、機能しています。テーブルが作成されます。プロファイルが削除されると、そのエンティティに属する行も Collection テーブルから削除されません。カスケードを使用したくありません。どうすればこれを機能させることができますか。

4

2 に答える 2

0

行を削除するコードは、Profile エンティティ クラスの @PostRemove アノテーションが付けられたメソッドに配置できます。

@Entity
public class Profile {

    @PostRemove
    public void cleanupCollectionTable(){
        Query query = em.createQuery("DELETE FROM Something s WHERE s.profile_id = :id");
        int deletedCount = query.setParameter(id, profileId).executeUpdate();
    }

    ...

}
于 2013-10-09T13:19:34.513 に答える