我有以下关系
Class UserAccount{
//Other fields
@OneToMany(mappedBy = "userAccount", cascade = CascadeType.REMOVE)
private Set imagesShared;
@ManyToMany
@JoinTable(name = "USER_LIKES", joinColumns = @JoinColumn(name = "USER_NAME"), inverseJoinColumns = @JoinColumn(name = "ID"))
private Set imagesLiked;
}
Class Images{
//other fields
@ManyToMany(mappedBy = "imagesLiked")
private Set likes;
}
这些线后我得到了一个例外
Hibernate: delete from IMAGES where ID=?
Hibernate: delete from COMMENTS where COMMENT_ID=?
Hibernate: delete from COMMENTS where COMMENT_ID=?
Hibernate: delete from COMMENTS where COMMENT_ID=?
Hibernate: delete from COMMENTS where COMMENT_ID=?
Hibernate: delete from COMMENTS where COMMENT_ID=?
Hibernate: delete from IMAGES where ID=?
例外:
Cannot delete or update a parent row: a foreign key constraint fails (`testdb`.`USER_LIKES`, CONSTRAINT `FKC6704E28B4E3D8B` FOREIGN KEY (`ID`) REFERENCES `IMAGES` (`ID`))
根据我的理解,当JPA尝试删除imagesShared时会发生这种情况.
我试过这样做:
for (Images image : userAccount.getImagesShared()){
image.setLikes(null);
}
em.remove(account);
但同样的错误.任何人?
UPDATE
当我添加这一行时,它工作正常.
for (Images image : userAccount.getImagesShared()){
image.setLikes(null);
}
userAccount.getImagesShared().clear();
em.remove(account);
但JPA执行的删除操作与我的操作之间有什么区别?