【发布时间】:2020-04-09 16:44:26
【问题描述】:
我是 Spring jpa 的新手,我正在尝试对 spring jpa 多对多数据库执行删除操作。我的数据库有用户和药物。我可以删除用户并从 user_drug 表中删除与其关联的行,我可以删除没有链接到 user_drug 表的药物,但我不能删除也在 user_drug 表中的药物。 我查看了此页面,但那里的解决方案对我不起作用.. How to remove entity with ManyToMany relationship in JPA (and corresponding join table rows)?
这是我的用户实体代码:
@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name = "user_drug",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "drug_id", referencedColumnName = "id"))
private Set<Drug> drugs = new HashSet<>();
这里是药品实体的代码:
@ManyToMany(mappedBy = "drugs", fetch=FetchType.EAGER)
private Set<User> users = new HashSet<>();
这里是 DrugServiceImpl 的删除方法:
public void delete(Drug drug)
{
drug.getUsers().clear();
drugRepository.delete(drug);
}
清除操作后我还打印了drug.getUsers()的大小,为0。为什么不从数据库中删除药物?
我已经尝试了很多方法..有人可以帮忙吗?
【问题讨论】:
-
创建一个从双方删除的事务?
-
如果我想删除一种药物,我希望它从 user_drug 和 drug 中删除。但购买该药物的用户不应从用户数据库中删除
-
我的意思是从用户那里删除药物的引用,然后(在事务中)保存用户的状态并从数据库中删除药物。
-
太棒了!我做到了,现在可以了。非常感谢!
标签: java spring jpa many-to-many