JPA多对一:删除一对多方面

时间:2013-04-11 06:57:43

标签: java mysql hibernate jpa

我有以下关系

Class UserAccount{

@OneToMany(mappedBy = "firstSharedBy")
private List<Images> imagesFirstShared;

}

Class Images{

@ManyToOne
@JoinColumn
private UserAccount firstSharedBy;
}

我想删除UserAccount实例。所以我这样做。

 userAccount.getImagesFirstShared().clear();
 entityManager.remove(userAccount);

但它引发了以下异常

 Cannot delete or update a parent row: a foreign key constraint fails (`testdb`.`Images`, CONSTRAINT `FK201C4A25D4C117` FOREIGN KEY (`firstSharedBy_USER_NAME`) REFERENCES `USERACCOUNT` (`USER_NAME`))

任何有线索的人?提前致谢

1 个答案:

答案 0 :(得分:2)

如果要在删除用户帐户时从数据库中删除图像,则需要将cascade=CascadeType.ALL属性添加到@OneToMany注释并删除行userAccount.getImagesFirstShared().clear();

如果您不想删除这些图像,则应对图像进行循环,将firstSharedBy属性设置为null并保存每个Images实体。只有这样你才能删除UserAccount实体,因为它没有约束连接。