我试图删除子类的对象而不调用父类,所以没有必要在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);
}
如果我执行cascadtype。所有在子(许可)类上,它也删除了父类。我只需要从数据库中删除这个许可证
所以这里我可以看到你有一个父类User和一个子类License与一个OneToMany双向映射。
在Many端意味着在您的许可证实体端,只要您不使用cascadtype。REMOVE,如果你删除一个许可证对象,它不会删除用户对象。
,这样可以直接删除许可证条目。它看起来像这样:
licenseRepositoryObject.delete (licenseObjectToBeDeleted);
在使用
删除子类之前@Transactional
public void delete(License license) {
license.setUser(null);
licenseRepository.delete(license);
}
使父级和子级之间的所有关系被删除