app开发者平台在数字化时代的重要性与发展趋势解析
715
2022-11-17
关于jpa中无法删除onetomany中many问题的解决
目录jpa 无法删除onetomany中many问题问题描述解决思路小结一下jpa @OneToMany 删除不了集合数据这时候如果想删除role
jpa 无法删除onetomany中many问题
问题描述
今天在做项目遇到一个问题,建立两个实体order和orderDetail,他们是onetomany关系,当我想要之间删除一个orderDetail时,发现不能删除但是程序也不出错。
实体建立模型如下图:
order中:
orderDetail中:
解http://决思路
1.首先我想到了直接删除orderDetail不行,是否可以直接通过update order的关联关系进行级联删除啦,于是写了一下代码
结果发现这样是可以删除orderDetail,但是这种删除方式并不是我想要的,而且感觉也DZMac不是最好的解决方法。
2.在结合上一种方法http://实现成功后,突然想到是否是关联关系建立的原因,如果我先把关联关系断开,在进行删除orderDetail是否能成功:
结果证明,成功删除
小结一下
虽然实现了我想要的功能,但是jpa的删除具体逻辑还需要深入研究。自我感觉是因为order是关系维护方,想要删除many端就必须先断开关系在进行删除
jpa @OneToMany 删除不了集合数据
在使用jpa的时候,如果有@OneToMany关系。想删除many的单个数据。有时候删除不了。 jap关系如下:一个用户对应多个角色。并且user实体中CascadeType.ALL
//user实体
@OneToMany(cascade = CascadeType.ALL,fetch= FetchType.LAZY,mappedBy = "user")
private Set
//role实体
@ManyToOne(fetch= FetchType.LAZYhttp://)
@JoinColumn(name="user_id")
private User user;
这时候如果想删除role
必须做2个事情:
1、删除role。
2、把role从集合roles中移除。
如下:
roleRepo.delete(role);//这里删除操作需要delete和从集合中remove一起操作才能生效
user.getRoles().remove(role);
userService.update(user);
如果不这样操作。就会不生效。
参考文档: https://stackoverflow.com/questions/2011519/jpa-onetomany-not-deleting-child
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~