会话中的订单版本大于存储库项目版本

时间:2014-08-28 19:19:07

标签: atg

我在日志中看到了InvalidVersionException的一些事件,其中会话中Order对象的版本(OrderHolder)大于缓存中的版本(Repository Item版本)。在什么情况下会发生这种情况?我的理解是,如果我们在事务之外修改和更新Order,我们通常会得到此InvalidVersionException,在这种情况下,缓存中的版本将大于存储在订单内存中的版本。

1 个答案:

答案 0 :(得分:0)

更新订单有一个非常完善的模式。您自己更新订单的任何代码(例如,标准购买流程表格处理程序之外)必须执行以下操作。

  1. 在个人资料
  2. 上获取写锁定
  3. 开始交易
  4. 按订单同步
  5. 修改订单
  6. 致电order.updateVersion()
  7. 致电OrderManager.updateOrder()
  8. 下达订单同步
  9. 结束交易
  10. 发布个人资料锁
  11. 如果您不遵循此规则,您最终可能会遇到这些错误。

    请参阅http://www.digitalsanctuary.com/tech-blog/java/atg/design-pattern-for-updating-an-atg-order.html