关于删除级联关系的多对多

时间:2014-09-15 19:32:07

标签: java hibernate jpa playframework

我有一个名为Profile的实体。可以遵循此实体或遵循其他配置文件。

public class Profile{

@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(name = "profile_fans")
public Set<Profile> fansFollowed;

}

我想删除个人资料,它会抛出这个错误:

  

无法删除或更新父行:外键约束失败(profile_fans,CONSTRAINT FK48ECA896ADDBF9EF FOREIGN KEY(fansFollowed_id)参考profileid ))

我想只删除个人资料之间的关系。不是实体。

这可能吗?

2 个答案:

答案 0 :(得分:0)

制作addProfile和removeProfile,添加和删除集合

答案 1 :(得分:0)

我认为有更好的解决方案。这就是我所做的,也许可以帮助别人:

List<Profile> followers=JPA.em().createQuery(
    "select p from " + Profile.class.getName() + " p " + 
    "join p.fansFollowed f where f.id = :id")
    .setParameter("id", profile.id)
    .getResultList();
for (Profile follower : followers) {
    follower.fansFollowed.remove(profile);
    follower.save();
}
profile.delete();