1

First CascadeType.Remove 不是一个选项,因为客户端数据库可能不支持级联操作。

我猜 OrphanRemoval = true 只处理 @OneToXXX 关系。

人际关系如何many-to-one

例如这样的many-to-one映射:

public class Order{
    ....
    @ManyToOne
    private Customer customer;
    .....
}

在 Customer 实体中,没有到 Order 的映射,这使得关系变成单向的。

那我们remove all orders from a customer before removing that customer怎么办?是否有一种简单的自动方法来处理它,或者我们必须通过服务层显式实现代码并调用类似的东西findOrdersByCustomer(long customer_id)然后删除它们?

提前致谢。

4

1 回答 1

2

是的,您需要找到所有订单并将其删除。或者您也可以执行 JPQL 查询删除所有内容:

delete from Order o where o.customer = :customer

请注意,您关于 CascadeType.REMOVE 的注释是错误的:执行级联的是 JPA,而不是数据库。因此,无论数据库是什么,它都受到支持。

于 2012-10-01T21:50:17.880 回答