【问题标题】:Is that possible to retrieve products without passing catalogType?是否可以在不传递 catalogType 的情况下检索产品?
【发布时间】:2021-10-30 13:22:02
【问题描述】:

我需要在不知道 catalogType 的情况下通过代码获取产品。是否可以在不传递 catalogType 的情况下检索产品?

下面是我试过的代码 sn-p:

@Resource
private ProductDao productDao;
    
@Resource
    private CatalogVersionService catalogVersionService;


List<ProductModel> getProductsByCode(String code) {

    CatalogVersionModel catalogVersionModel = new CatalogVersionModel();
    catalogVersionModel.setVersion("Online");
    catalogVersionService.addSessionCatalogVersion(catalogVersionModel);
    List<ProductModel> productModels = productDao.findProductsByCode(code);

}

以下是我遇到的异常:

{
    "errors": [
        {
            "message": "model CatalogVersionModel (<unsaved>) cannot be serialized due to being modified, new or removed",
            "type": "FlexibleSearchError"
        }
    ]
}

我可以知道如何解决上述问题吗?

【问题讨论】:

    标签: hybris hybris-data-hub


    【解决方案1】:

    在 SAP Commerce (hybris) 中创建产品/变体时,必须将其附加到目录。

    一个目录(CatalogModel)也有一个版本(通常是分阶段的或在线的),对象称为CatalogVersionModel

    当您要检索产品/变体时,您必须指明CatalogVersionModel,因为产品代码不是在数据库中检索产品的唯一键(您可以在后台检查“产品”类型并查看在 XML 窗格中,code 和 catalogVersion 的值都为 unique="true")

    现在你的代码有几个问题。

    • 您不应创建目录版本,但应使用服务检索它(请参阅DefaultCatalogVersionService
    • 您应该使用服务来检索您的产品(请参阅DefaultProductService

    productService 实现中,您会发现getProductForCode 的两个方法。

    • 只有 sku 代码作为参数的一种
    • 以 sku 代码和 catalogVersion 作为参数的一种

    第一个方法实际上看起来像您想要的方法,但实际上它使用了您会话中的 catalogVersion。如果您在 groovy 中运行代码或在电子商务网站中使用 Java 运行代码,您的会话将有所不同。

    你可以在下面找到这个方法的注释

    返回具有指定代码的产品。默认情况下,搜索使用当前会话用户、当前会话语言和当前活动目录版本(存储在会话中的属性 SESSION_CATALOG_VERSIONS 中)。有关修改搜索会话上下文,请参阅 FlexibleSearchQuery。

    【讨论】:

      【解决方案2】:

      您需要指定目录,因为可能有多个目录,并且同一产品可能存在于所有这些目录中。

      【讨论】:

      • 是否可以在不传递 catalogType 的情况下检索产品? bcoz 我不知道catalogType。以及如何使 hac groovy 能够使用上述 sn-p 代码检索结果?为什么不是java代码?
      • 你也可以回答这个问题吗:stackoverflow.com/questions/69780527/…
      • 你有没有在提交模式下运行过 groovy
      猜你喜欢
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      相关资源
      最近更新 更多