在@OneToMany 中实现 orphanRemoval

Implementing orphanRemoval in @OneToMany

所以我试图删除一对多关系中的 child,但我不确定这是否是正确的做法。我正在阅读如何在线进行操作,但很多人都在谈论 entitymanager、cacasded、使用查询等。我不确定以哪种方式进行操作,通常我使用 crudrepository 并简单地执行 .save 和 .deleteById 等

这是我目前所拥有的

@Entity
public class User

@OneToMany(orphanRemoval = true, cascade = CascadeType.PERSIST)
    private List<Payment>payment = new ArrayList<Payment>();

getters/setters

@Service
public class UserService {


    public void addPayment(User user, Payment payment) {
        user.getPayment().add(payment);
        }
    
    public void removePayment(User user, Payment payment) {
        user.getPayment().remove(payment);
    }

我必须在这里弄乱级联类型或实体管理器吗?

假设 user 方法参数是一个已与会话关联的托管实体,那么是的,这是正确的方法。

刷新会话后,Hibernate 将删除已从用户付款中删除的付款实例。

你可以试试CascadeType.ALL。它适用于我的情况。