我有两个类Service和Customer,它们具有Service到Customer的多对一关联。我想删除一个客户和任何引用它的服务。我使用JPA作为连接到PostgreSQL数据库的ORM(带有Hibernate)。使用带有外键约束的JPA删除对象
如果我可以通过删除客户级联到引用它的服务的方式来定义关联,那就太好了。但是,也许我误解了某些内容,因为关联是使用@ManyToOne in Service定义的,所以操作会从服务级联到客户,而不是其他方式?
因此,如果没有级联删除,我会着手删除所有引用客户的服务。除JPA/Hibernate想批量删除并按错误顺序执行它们外,看起来很简单!我的代码基本上查询引用客户的服务,每个都调用entityManager.remove(),然后调用Customer的entityManager.remove()。但是,当我刷新它时,我得到一个例外,即由于外键约束而导致从客户删除失败。
在从客户中删除之前,是否真的需要尝试提交从服务中删除?我宁愿不是因为我的交易是集装箱管理的,而且让它做出承诺会是一件痛苦的事情。
感谢, 安迪
我同意如果方向颠倒,对象模型会更好。不幸的是,我从其他人那里继承了对象模型,并且因为向后兼容性的原因无法证明对其进行修改。 – Andy 2009-10-20 21:10:33