SAP Hybris 中出现“项目 9294277673006 不再有效(已删除):对象不再有效”错误

问题描述 投票:0回答:1

sap 订单流程中有一个流程任务,该任务从订单中删除现有订单条目,并从也包含行项目的销售订单响应中添加条目。在此过程中,我在下一些订单时遇到此错误:

项目 9294277673006 不再有效(已删除):对象不再有效

我怀疑执行

Modelservice.removeall
然后访问
oldOrderEntries
中的相同
copyPricesForMatchingProducts
会导致问题。但我不确定如何无法访问存储的条目,尽管模型服务也仅针对少数请求删除了它们。请帮我解决这个问题。

public OrderModel convert(List<List<CPQInboundOrderLineItemDTO>> cpqInboundOrderLineItemDTOS, OrderModel orderModel) throws ConversionException {

    CatalogVersionModel catalogVersionOfProducts = null;
    List<AbstractOrderEntryModel> newOrderEntries = new ArrayList<>();
    List<AbstractOrderEntryModel> oldOrderEntries = orderModel.getEntries();

    if (CollectionUtils.isNotEmpty(orderModel.getEntries())) {
        catalogVersionOfProducts = orderModel.getEntries().get(0).getProduct().getCatalogVersion();
        getModelService().removeAll(orderModel.getEntries());
    }
 for (List<CPQInboundOrderLineItemDTO> lineItemList : cpqInboundOrderLineItemDTOS) {
            for (CPQInboundOrderLineItemDTO lineItem : lineItemList) {
                OrderEntryModel orderEntryModel = getModelService().create(OrderEntryModel.class);
                                orderEntryModel.setEntryNumber(lineItem.getItemNumber());
                copyPricesForMatchingProducts(orderEntryModel, oldOrderEntries);

}


private void copyPricesForMatchingProducts(OrderEntryModel orderEntryModel, List<AbstractOrderEntryModel> oldOrderEntries) {

        if (CollectionUtils.isNotEmpty(oldOrderEntries)) {
            for (AbstractOrderEntryModel oldOrderEntryModel : oldOrderEntries) {
                if (oldOrderEntryModel.getProduct().getCode() == orderEntryModel.getProduct().getCode()) {
                    orderEntryModel.setBasePrice(oldOrderEntryModel.getBasePrice());
                   orderEntryModel.setSalesOrgCountryPrice(oldOrderEntryModel.getSalesOrgCountryPrice());
                    
                }

            }
        }
    }

详细错误:

项目 8975006367790 不再有效(已删除):对象不再有效"," thrown":{"commonElementCount":0,"localizedMessage":"项目 8975006367790 不再有效(已删除):对象不再有效"," message":"项目 8975006367790 不再有效(已删除):对象不再有效","name":"de.hybris.platform.jalo.JaloObjectNoLongerValidException","extendedStackTrace":[{"class":"de.hybris .platform.jalo.Item$CachedGetter","方法":"获取","文件":"Item.java","行":740,"精确":false,"位置":"coreserver.jar", "version":"?"},{"class":"de.hybris.platform.jalo.ExtensibleItem","method":"getProperty","file":"ExtensibleItem.java","line":343, "exact":false,"location":"coreserver.jar","version":"?"},{"class":"de.hybris.platform.jalo.order.GeneeratedAbstractOrderEntry","method":"getBasePrice ","file":"GenerateAbstractOrderEntry.java","line":106,"exact":false,"location":"coreserver.jar","version":"?"},{"class":"jdk .internal.reflect.NativeMethodAccessorImpl","方法":"invoke0","文件":"NativeMethodAccessorImpl.java","行":-2,"精确":false,"位置":"?","版本" :"?"},{"class":"jdk.internal.reflect.NativeMethodAccessorImpl","method":"调用","file":"NativeMethodAccessorImpl.java","line":77,"exact":false ,"location":"?","version":"?"},{"class":"jdk.internal.reflect.DelegatingMethodAccessorImpl","method":"invoke","file":"DelegatingMethodAccessorImpl.java" ,"line":43,"exact":false,"location":"?","version":"?"},{"class":"java.lang.reflect.Method","method":"调用","文件":"Method.java","行":568,"精确":false,"位置":"?","版本":"?"},{"class":"de. hybris.platform.jalo.type.ReflectionAttributeAccess$AttributeMethod","方法":"invokeGetter","文件":"ReflectionAttributeAccess.java","line":753,"exact":false,"location":"coreserver. jar","version":"?"},{"class":"de.hybris.platform.jalo.type.ReflectionAttributeAccess","method":"getValue","file":"ReflectionAttributeAccess.java"," line":959,"exact":false,"location":"coreserver.jar","version":"?"},{"class":"de.hybris.platform.jalo.Item","method" :"getAttribute","file":"Item.java","line":1921,"exact":false,"location":"coreserver.jar","version":"?"},{"class" :“de.hybris.platform.servicelayer.internal.model.impl.JaloPersistenceObject”,“方法”:“readRawValue”,“文件”:“JaloPersistenceObject.java”,“行”:110,“精确”:假,”位置":"coreserver.jar","版本":"?"},{"class":"de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter","方法":"readSingleAttribute","文件":"ItemModelConverter.java","行":1447,"精确":false,"位置":"coreserver.jar","版本":"?"},{"class":"de.hybris. platform.servicelayer.internal.converter.impl.ItemAttributeProvider","method":"getAttribute","file":"ItemAttributeProvider.java","line":110,"exact":false,"location":"coreserver. jar","version":"?"},{"class":"de.hybris.platform.servicelayer.model.ItemModelContextImpl","method":"loadUnlocalizedAttribute","file":"ItemModelContextImpl.java","行":285,"精确":false,"位置":"coreserver.jar","版本":"?"},{"class":"de.hybris.platform.servicelayer.model.ItemModelContextImpl","方法":"getValue","文件":"ItemModelContextImpl.java","行":245,"精确":false,"位置":"coreserver.jar","版本":"?"},{"类":"de.hybris.platform.servicelayer.model.ItemModelContextImpl","方法":"getPropertyValue","文件":"ItemModelContextImpl.java","行":261,"精确":false,"位置" :"coreserver.jar","version":"?"},{"class":"de.hybris.platform.core.model.order.AbstractOrderEntryModel","method":"getBasePrice","file":" AbstractOrderEntryModel.java","line":262,"exact":false,"location":"models.jar","version":"?"},{"class":"com.octanner.pricing.converter. impl.CPQInboundOrderLineItemConverter","方法":"copyPricesForMatchingProducts","文件":"CPQInboundOrderLineItemConverter.java","行":93,"精确":false,"位置":"octsegmentpricingserver.jar","版本":" ?”}

sap-commerce-cloud
1个回答
0
投票

我假设订单创建逻辑尝试访问该项目。您可以尝试在删除订单对象后提交并刷新。

但是如果您在生产中有多个节点,这无法解决您的问题。因为缓存同步速度不快。所以你需要避免删除物品。也许您还需要它们以供将来的调查使用。

最佳实践:

  • 创建另一个版本并对其进行更改。
  • 创建清理作业或使用数据保留框架来删除不需要的数据。
© www.soinside.com 2019 - 2024. All rights reserved.