我试图在更新之前计算实体中的修改。
- 显示 HTML 表单
- 提交时:
- 开始交易
- 加载实体
- 将表单数据应用于实体
- 计算变化
- 持久化实体
步骤 2.1 到 2.3 是通过我的 MVC 框架 (Spring MVC) 管理的,所以我实际上从来没有在没有更改的情况下引用原始实体。
所以我目前正在尝试做的是以下内容:
// transaction is already started
public Modifications store(Entity updated) {
Entity original = entityManager.find(Entity.class, updated.getId());
Modifications mods = calculateModifications(original, updated);
entityManager.merge(updated);
return mods;
}
但不幸的是,我从实体管理器收到的实体==
与更新后的实体相同(读取)。
这是问题:如何强制实体管理器从数据库中再次加载实体而不分离我更新的实体?
我使用 Hibernate 作为我的持久性提供程序,但我想尽可能地保持这个提供程序不可知论。