2019独角兽企业重金招聘Python工程师标准>>>
在使用jpa的时候,如果有@OneToMany关系。想删除many的单个数据。有时候删除不了。 jap关系如下:一个用户对应多个角色。并且user实体中CascadeType.ALL
//user实体
@OneToMany(cascade = CascadeType.ALL,fetch= FetchType.LAZY,mappedBy = "user")private Set
@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://stackoverflow.com/questions/2011519/jpa-onetomany-not-deleting-child