关于jpa中无法删除onetomany中many问题的解决
程序员文章站
2022-06-22 12:06:37
目录jpa 无法删除onetomany中many问题问题描述解决思路小结一下jpa @onetomany 删除不了集合数据jpa 无法删除onetomany中many问题问题描述今天在做项目遇到一个问...
jpa 无法删除onetomany中many问题
问题描述
今天在做项目遇到一个问题,建立两个实体order和orderdetail,他们是onetomany关系,当我想要之间删除一个orderdetail时,发现不能删除但是程序也不出错。
实体建立模型如下图:
order中:
orderdetail中:
解决思路
1.首先我想到了直接删除orderdetail不行,是否可以直接通过update order的关联关系进行级联删除啦,于是写了一下代码
结果发现这样是可以删除orderdetail,但是这种删除方式并不是我想要的,而且感觉也不是最好的解决方法。
2.在结合上一种方法实现成功后,突然想到是否是关联关系建立的原因,如果我先把关联关系断开,在进行删除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> roles = new hashset<role>(); //role实体 @manytoone(fetch= fetchtype.lazy) @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://*.com/questions/2011519/jpa-onetomany-not-deleting-child
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
推荐阅读
-
关于Vue-elementUI中,给input手动赋值之后无法修改的问题解决
-
解决Word中汉字与英文字母和数字之间的距离无法删除问题
-
关于jpa中无法删除onetomany中many问题的解决
-
关于Vue-elementUI中,给input手动赋值之后无法修改的问题解决
-
IDEA中springBoot项目使用JPA(hibernate)无法自动生成实体关联的数据表的解决问题
-
php中关于验证码无法显示的问题解决办法
-
javascript - 关于iscroll.js滚动容器中动态插入的元素无法滚动的问题,该如何解决?
-
php中关于验证码无法显示的问题解决办法
-
MySQL中关于表数据文件损坏导致数据库无法启动的问题解决
-
关于DIV中CSS无法显示背景颜色的问题解决