考虑以下场景:一个 Db 事务涉及来自不同表的多行,并带有版本控制。
例如:一个shopLists和products。shopList 可能包含产品(其数量在 shoplist 中)并且产品具有其当前库存。
当我插入编辑 shopList 时,我希望更新 shopList 中这些产品的库存以保持库存一致。
为此,我打开一个事务,插入/更新 shopList,更新每个产品的库存(应用增量),然后提交事务。到现在也没什么大不了的。
然而,其他用户可能已经共同更新了一个或多个产品。甚至更新 shopList 本身。在这两种情况下,我都会在提交事务时收到 StaleObjectStateException。
问题是:有没有办法确定哪个表导致了 StaleObjectStateException?
如果产品导致异常,我可以从数据库中刷新所有涉及的产品,然后重新应用库存增量。这很好。如果 shopList 导致异常,最好将问题简单地报告给用户,以便他可以重新开始。
非常感谢您的帮助。