Atg 失效订单是否从项目缓存中删除订单?

Atg 失效订单是否从项目缓存中删除订单?,atg,Atg,我的假设是,当我们通过调用orderImpl.invalidateOrder()使订单无效时,它所做的只是将容器设置为null,因此在下次调用(比如)getCommercieItem()时,refreshOrder管道将执行并加载项目 我的问题是-即使我们使订单无效,当refreshOrder管道执行时,它也会从项目缓存(如果可用)加载订单,这表明订单不会从缓存中删除。从ATG10.2及更低版本开始,orderImpl.invalidateOrder? ATG的缓存/订单失效(我认为)有一个bu

我的假设是,当我们通过调用
orderImpl.invalidateOrder()
使订单无效时,它所做的只是将容器设置为null,因此在下次调用(比如)getCommercieItem()时,
refreshOrder
管道将执行并加载项目


我的问题是-即使我们使订单无效,当refreshOrder管道执行时,它也会从项目缓存(如果可用)加载订单,这表明订单不会从缓存中删除。从ATG10.2及更低版本开始,
orderImpl.invalidateOrder

ATG的缓存/订单失效(我认为)有一个bug

正如@radimpe comment所建议的,如果调用
OrderImpl.invalidateOrder()
,下次访问Order对象中的任何内容时,应使用未缓存的
RepositoryItem
s

然而,ATG的存储库缓存实际上是通过将它从缓存中删除的项放入WeakReference来工作的,这意味着它会立即将该项从缓存中取回。所以功能被破坏了,伊姆霍


除非有人知道得更清楚?

内部
invalidateOrder()
将设置一个标志使存储库缓存无效。这仅在调用
ensureContainers()
时触发,该函数由
getCommercieItems()
调用。你看到什么不同吗?啊。。我对OrderRepository进行了一些扩展—未清除其缓存。看起来在我的getCustomObjects()中,我需要处理这个问题。