gpt4 book ai didi

java - JPA多对一: Deleting One to Many side

转载 作者:行者123 更新时间:2023-11-29 08:33:21 26 4
gpt4 key购买 nike

我有以下关系

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`))

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

最佳答案

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

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

关于java - JPA多对一: Deleting One to Many side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com