0

第二列中的空值(传入的 csv 文件):->
输入 CSV:10512、、10513、12345、

冲击:

INSERT_UPDATE Product;code[unique=true];vendors(code)[translator=ca.batch.converter.StiboSetDefaultVendorIfNullTranslator];...

代码:

扩展 de.hybris.platform.impex.jalo.translators.AbstractValueTranslator;

private final String defaultVendorCode = "000000";

@Override
public Object importValue(String valueExpr, final Item item)
        throws JaloInvalidParameterException {

    if (valueExpr == null || StringUtils.isEmpty(valueExpr)) {

        LOG.debug("Current attribute value is null so inserting "
                + defaultVendorCode);
        valueExpr = defaultVendorCode;

    }

    return valueExpr;
}

对于 12345 也出现以下错误,但最终的 impex 转换行有数字(impex 行 -> 10153;12345)

由于参数不匹配尝试为属性 de.hybris.platform.jalo.product.Product.vendors 设置值“000000”(得到 java.lang.String,预期 de.h ybris.platform.jalo.product.Product)。,

(impex 行 -> 10153;;)

4

2 回答 2

1

你应该试试这个:[allownull=true] 属性修饰符;您的 impex 应如下所示:

INSERT_UPDATE Product;code[unique=true];vendors(code)[allownull=true]

仅导入 true / false 默认值:false 如果设置为 true,则此修饰符显式允许列值使用空值。如果没有阻止空值的业务代码,这个修饰符甚至允许强制属性中的空值,例如Media类型的catalogVersion属性。示例:[allownull=true] 提示 在服务层模式下,如果设置了 allownull,导入可能会失败。从 hybris Commerce Suite 版本 5.1.1 开始,如果遇到此参数,导入将动态切换到旧模式。处理给定行后,导入将切换回 SL 模式。

于 2016-11-15T19:00:05.720 回答
0

我认为错误信息很清楚:

(got java.lang.String, expected de.h ybris.platform.jalo.product.Product).,

对于翻译器,您必须查找实际的默认供应商对象,而不是返回默认供应商代码。

我认为最简单的解决方案是如果您使用装饰器而不是返回“供应商”属性的代码值。您可以在此处找到详细说明: https ://wiki.hybris.com/display/release5/ImpEx+API#ImpExAPI-WritingOwnCellDecorator

但基本上是这样的:

public class MyDecorator implements CSVCellDecorator
{
   public String decorate( int position, Map<Integer, String> srcLine )
   {
      // here add your custom logic to check and if applies return your default vendor code, otherwise return the given input value
      //String parsedValue=srcLine.get(position);
      //return parsedValue+"modified"; // some decoration stuff
   }
}

希望那有所帮助 :)

于 2015-12-22T11:19:32.443 回答