0

PrePersistHook 提供了这种方法

Optional<ItemModel> execute(ItemModel item);

在实现 PrePersistHook 时,更改的模型将传递给该方法。执行路径已经打开了一个事务,并且该项目似乎已经被持久化,但该事务尚未提交。

如果我尝试通过灵活的搜索再次从数据库中获取相同的项目,它会返回已经更新的对象。

文档 => https://help.sap.com/viewer/bad9b0b66bac476f8a4a5c4a08e4ab6b/v2005/en-US/028a2af06880407cb4b1c0624693dadd.html 定义不应打开事务或创建新线程。

但是如果不允许,如何在 PrePersistHook 中获取旧版本的 Model 来执行验证或在更改持久之前执行其他检查?

在我们的例子中,我们想要创建 OrderModel 的新版本,但持久化的旧版本已经具有旧值。我们认为没有机会以干净的方式获得旧版本。

许多标准的 prepersist 挂钩总是从数据库中再次获取项目并在挂钩中返回 Option.empty()

最好的问候,迈克尔。

4

1 回答 1

0

我找到了一个适合我的解决方案。我覆盖 DefaultModelEntityService 并在更新之前读取数据。

于 2022-01-28T09:12:05.817 回答