删除实体会自动更新他们的关系吗?

时间:2011-12-31 13:57:07

标签: java jpa entity jpa-2.0 relationship

假设Person实体的List<Address> listOfAddresses字段与@ManyToMany实体有@OneToManyAddress关系。如果我使用Address删除em.remove("James's_address")listOfAddresses是否会自动更新以删除"James's_address"

1 个答案:

答案 0 :(得分:3)

取决于。

如果您有OneToMany,并且地址表中有人的外键,则删除该地址将起作用。如果在删除地址之前已在会话中加载了人及其地址,则其地址列表仍将包含已删除的地址。你必须自己维护所有的关联。如果该人的地址尚未加载,则加载时,列表将不包含已删除的地址,显然,因为Hibernate将无法在数据库中找到它。

如果OneToMany使用连接表,或者它是ManyToMany,那么删除地址而不将其从引用它的所有人的地址列表中删除将导致异常,因为连接表将继续引用要删除的地址。外键约束是导致异常的原因。