java - 使用具有外键约束的 JPA 删除对象

标签 java database hibernate orm jpa

我有两个类,服务和客户,具有从服务到客户的多对一关联。我想删除客户以及引用它的任何服务。我使用 JPA 作为附加到 PostgreSQL 数据库的 ORM(下面是 Hibernate)。

如果我能够以删除客户会级联到引用它的服务的方式定义关联,那就太好了。但是,也许我误解了一些东西,因为关联是在服务中使用 @ManyToOne 定义的,所以操作将从服务级联到客户,而不是相反?

因此,在没有级联删除的情况下,我开始简单地删除引用客户的所有服务。看起来很简单,除了 JPA/Hibernate 想要批量删除并以错误的顺序执行它们!我的代码基本上查询引用客户的服务,对每个服务调用entityManager.remove(),然后对客户调用entityManager.remove()。但是,当我刷新它时,出现异常,由于外键约束,从客户中删除失败。

我真的需要在从客户删除之前尝试从服务中删除吗?我宁愿不这样做,因为我的事务是由容器管理的,并且提交它会很痛苦。

谢谢, 安迪

最佳答案

手动管理约束关系可能不是一个好主意,特别是考虑到它是一种非常简单且标准的关联类型。

你为什么不定义 one-to-many associationCustomer 中指定级联? (在链接中,您的 Service 类将替换示例中的 Order。)

关于java - 使用具有外键约束的 JPA 删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1596951/

相关文章:

java - JPA2 元模型生成器不会从依赖库生成模型

php - 如何将多个表链接到一个 ID

database - 拆分数据库是合法的安全措施吗?

java - 将 Hibernate 实体重构为子类

Java & Mockito - 将参数传递给方法并捕获结果

Java 2D 数组越界错误

java - 为什么 R 无法识别我的 "about"标签

java - 如何跟踪用户对 Web 应用程序中对象的更改?

php - SQL从其他表中给定时间戳后的记录中选择

java - 所需的 Hibernate 基本资源详细信息