第一个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)
之类的内容然后删除它们?
提前致谢。
答案 0 :(得分:2)
是的,您需要找到所有订单并将其删除。或者您也可以执行删除所有内容的JPQL查询:
delete from Order o where o.customer = :customer
请注意,您关于CascadeType.REMOVE的注释是错误的:它是执行级联的JPA,而不是数据库。因此无论数据库是什么都支持它。