删除父对象时删除子对象

时间:2013-02-20 10:52:26

标签: java spring hibernate

我目前在开发的弹簧网络应用程序上遇到问题。我已经检查了这个网站是否存在类似的问题,但是解决方案似乎都不适用于我。

我有3个实体:Person,Team和TeamMembership,它只是将Person和Team之间的ManyToMany关系分解为两个OneToMany关系的桥接实体。

最初,我已将Team和TeamMembership删除正常工作,如果我删除或更新了团队,TeamMembership将自动删除或正确更新。但是当我介绍Person实体时,它停止了正常工作。我得到一个Hibernate异常,说删除的对象将由cascade重新保存

我希望它能够工作,如果我删除一个Team或Person对象,相应的TeamMembership将被孤立并删除。请协助。

代码示例如下:

人:

@OneToMany(mappedBy="person", cascade=CascadeType.ALL, fetch=FetchType.EAGER, orphanRemoval=true)
private List <TeamMembership> teamMemberships;

小组:

@OneToMany(mappedBy="team", cascade=CascadeType.ALL, fetch=FetchType.EAGER, orphanRemoval=true)
private List <TeamMembership> teamMemberships;

TeamMembership:

@ManyToOne
@JoinColumn(name="teamId", nullable=false)
private Team team;

@ManyToOne
@JoinColumn(name="personId", nullable=false)
private Person person;

我执行的代码是:

@RequestMapping(value = "/removePerson", method = RequestMethod.GET)
public String removePerson(@RequestParam("id") Long id, Model model){
    logger.info("Deleting person with id " + id);
    personService.removePerson(id);
    return "personList";
}

我收到的错误是:

org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade (remove deleted object from associations): 

0 个答案:

没有答案