如何移除ManyToOne JPA对象



我试图删除子类的对象而不调用父类,所以没有必要在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);
}

使父级和子级之间的所有关系被删除

最新更新