[英]Trying to insert defaltValue to a column through impex but getting error unable to insert default value in the place of null
第二栏中的空值(传入的CSV文件):->
输入CSV:10512、10513、12345,
impex:
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”(get java.lang.String,应为de.h ybris.platform.jalo.product.Product)。,
(impex行-> 10153 ;;)
您应该尝试这样:[allownull = true]属性修饰符; 您的展示次数应如下所示:
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模式。
我认为此错误消息非常清楚:
(got java.lang.String, expected de.h ybris.platform.jalo.product.Product).,
对于翻译器,您必须查找实际的默认供应商对象,而不是返回默认供应商代码。
我认为最简单的解决方案是使用Decorator代替,然后返回“ vendors”属性的代码值。 您可以在此处找到详细说明: 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
}
}
希望那有所帮助 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.