我正在尝试删除子类的对象,而不调用父类,所以没有必要在2个请求数据库。你能帮助解决这个问题,并解释如何解决这个问题。
父类:
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<License> licenses;
子类:
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "user_id", referencedColumnName = "id")
private Person user;
正在尝试删除:
@Transactional
public void delete(License license) {
licenseRepository.delete(license);
}
如果我对子类(许可证)执行CascadeType.ALL,它也会删除父类。我只需要从数据库中删除此许可证
3条答案
按热度按时间wnavrhmk1#
在这里,我可以看到您有一个父类 User 和一个子类 License,它们具有OneToMany双向Map。
此处的“多”端表示在许可证实体端,只要您不使用 CascadeType.REMOVE,如果您删除许可证对象,它不会删除用户对象。
这样您就可以直接删除许可条目。它看起来像这样:
许可证存储库对象.delete(要删除的许可证对象);
blpfk2vs2#
在使用删除子类之前
以便删除父级和子级之间的所有关系
qrjkbowd3#
在子类中:编写代码它将只删除子类
在业务实现中:
希望你能找到答案。