删除@ElementCollection中的行

时间:2013-10-09 13:02:36

标签: hibernate jpa-2.0

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

我在我的个人资料中有这种关系并且它有效。创建一个表。删除配置文件时,我不会从Collection表中删除属于该实体的行。我不想使用级联。我怎样才能做到这一点。

2 个答案:

答案 0 :(得分:2)

开箱即用。当通过EntityManager.remove删除具有ElementCollection的实体时,不需要进一步的操作 - 持久性提供程序也会从集合表中删除。

答案 1 :(得分: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();
    }

    ...

}