我有有以下类似的关系实体Hibernate项目:开球事件发生后中的多个对象的Hibernate事务更新
Car {
String name;
Engine engine;
}
Engine {
String name;
}
我们有一个外部系统(Web服务,一个黑盒子),这需要与上述实体所做的更改进行更新,但是,外部系统不会使Car
和Engine
之间的区别:
RemoteCar {
String name;
String engineName;
}
同步过程涉及获得的实例,更新从Car
和Engine
更改的值,然后发送更新请求。
我试图用一个PostUpdateEventListener
与requiresPostCommitHanding
返回true
揭开序幕的应用程序事件更新外部系统,但如果Car
的名字和Engine
的名字都在同一事务的更新,我收到两个事件,开始与外部系统的两个同步。
有没有办法确保我只接收我需要的事件?可悲的是Engine
的一些更新是直接执行的(EngineDao.get(1).setName()
),这意味着Car
从未涉及 - 我可以轻松地工作我的方式备份树以获得我的Car
实例,但我不知道如何判断是否更新到Engine
是Car
的更大更新或Engine
的自包含更新的一部分。
谢谢你。你将如何管理你的缓存?我可以使用具有PostUpdateEvent.getSession()。getTransaction()作为IdentityHashMap中的键值的Map吗? (当然,正确同步) – Rich
是的,这正是我在管理与Envers中的休眠会话有关的审计进程缓存时所做的。 – Naros