如何在JPA中更改子项后更新父实体?

时间:2015-04-06 09:05:49

标签: jpa ejb

我有一个与“商家”(多对一)相关的“节日”实体,商家与“类别”(多对一)有关

在我的一个页面中,我加载所有类别,然后获取商家列表,在用户选择喜欢的商家后,我加载商家节日列表。最后,当用户删除喜欢的节日时,我将其删除:em.remove()

但删除的节日仍然存在于Merchant的节日列表中,还有category.merchantList(n).festival(m)!

所以当我重新加载页面时,我发现已删除的节日,而不再是数据库了!

那么我应该如何更新商家和类别实体?!

1 个答案:

答案 0 :(得分:0)

使用双向实体关系,您需要维护关系的两个方面。这意味着您需要从包含它的集合中删除festival(在您的情况下为merchant.festivals)。

当只涉及两个实体时,这是一项简单的任务。在更复杂的模型中,更改/删除某个实体后,可以更轻松地从数据库中刷新所有相关数据。这是因为em.remove()会将delete语句激活到数据库中,导致删除该行,但需要与已经加载到实体管理器缓存中的实体同步。

相关问题