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