postUpdate, postRemove, postPersist - 数据库中的数据了吗?

postUpdate, postRemove, postPersist - is the data in the database yet?

出于问题的目的,我将询问 postUpdate,但我假设它们都是类似的。如果我获取一个现有实体,修改它,然后刷新,那么我可以订阅一个关于此的 postUpdate 事件。在此事件触发时,数据实际上是否在数据库中?或者在事件触发和实际保存数据之间有一小段时间?

文档似乎清楚地说

The postUpdate event occurs after the database update operations to entity data

所以我认为是前者。

但我遇到了类似于 的问题 - 答案表明这是因为在 postUpdate 事件期间数据实际上尚未完全保存,这就是 postFlush 事件是为了代替。

有人可以确认一下吗?

我想通了,他们 运行 在数据库事务开始之后但在提交之前 - 所以答案是否定的,数据不在那里。事务提交后postFlush运行秒

该行为的发生是因为所有 post* 事件都在事务块内触发(预期 postFlush),因此数据实际上已经在数据库中,但它们在事务中,但还没有承诺。