我有有以下類似的關係實體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