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

how to update parent entities after changing child in JPA?

我有一个 "festival" 实体与 "merchant"(多对一)相关,商家与 "category"(多对一)相关

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

但被删除的节日仍然存在于商家的节日列表中并且category.merchantList(n).festival(m) !

所以当我重新加载页面时,我发现已删除的节日虽然它不再在数据库中了!

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

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

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