【发布时间】:2018-04-25 13:09:31
【问题描述】:
我正在使用PostUpdateEventListener 注册通过
registry.appendListeners(EventType.POST_COMMIT_UPDATE, listener)
和其他一些侦听器以跟踪 Hibernate 所做的更改。这完美地工作,但是,我在那里看到一个问题:
假设,为了通过id 跟踪一些amount,我只需执行
amountByIdConcurrentMap.put(id, amount);
在每个POST_COMMIT_UPDATE 上(让我们忽略其他操作)。问题是这个调用发生在提交之后的某个时间。因此,由于两个提交一个接一个地写入同一个实体,我可以以错误的顺序接收事件,最终存储较旧的amount。
- 这真的可能吗?或者操作是否以某种方式同步?
- 有没有办法防止或至少检测到这种情况?
【问题讨论】:
标签: java hibernate concurrency transactions