【发布时间】:2009-10-20 20:01:23
【问题描述】:
我有两个类,Service 和 Customer,具有从 Service 到 Customer 的多对一关联。我想删除一个客户和任何引用它的服务。我使用 JPA 作为连接到 PostgreSQL 数据库的 ORM(下面带有 Hibernate)。
如果我能以这样一种方式定义关联,即删除客户会级联到引用它的服务,那就太好了。但是,也许我误解了一些东西,因为关联是使用 @ManyToOne in Service 定义的,所以操作会从 Service 级联到 Customer,而不是反过来?
因此,在没有级联删除的情况下,我着手简单地删除所有引用客户的服务。看起来很容易,除了 JPA/Hibernate 想要批量删除并以错误的顺序执行它们!我的代码基本上查询引用客户的服务,在每个服务上调用 entityManager.remove(),然后在客户上调用 entityManager.remove()。但是当我刷新它时,我得到一个异常,即由于外键约束,从 Customer 中删除失败。
我真的需要在从客户删除之前尝试从服务中提交删除吗?我宁愿不这样做,因为我的事务是容器管理的,提交它会让人头疼。
谢谢, 安迪
【问题讨论】:
标签: java database hibernate orm jpa