Hybris归功于一个产品组

时间:2017-04-05 16:24:10

标签: e-commerce hybris

我们有一个需要添加到产品的新属性(特殊??)。并且只有一些产品具有该属性的值为true。所有其他人都认为这个价值是假的。

如果我们在产品级别创建该属性....有人必须进入并在后台手动为所有产品设置该值....这是太多的工作..

有哪些更好的方法来解决这个问题?....我们可以为产品子集创建产品组,然后在该组级别设置该属性吗?这样维护变得容易......

1 个答案:

答案 0 :(得分:0)

您可以考虑以下几个选项: 您可以使用默认值false:

在Product item级别声明该属性
            <attribute qualifier="myAttribute" type="java.lang.Boolean">
                <description>what it dodes</description>
                <persistence type="property" />
                <defaultvalue>Boolean.FALSE</defaultvalue>
            </attribute>

这将保证每个新创建的产品的默认值为false。 请注意,这不会将值false设置为任何现有实例。 如果您将此属性添加到现有系统(例如,作为迁移的一部分),您可以例如在代码中将null值视为false,或者您可以将其视为false。编写一个beanshell脚本,作为迁移的一部分执行,该更新将更新值仍设置为null的所有产品(参见http://experts.hybris.com/answers/3446/view.html)。

复制/修改(但未测试:))来自hybris专家论坛上的链接答案:

import de.hybris.platform.jalo.SearchResult; 
import de.hybris.platform.jalo.product.Product; 
import java.util.Collections;
SearchResult products = de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.getInstance().search("select {PK} from {Product} where {myAttribute} IS NULL", Collections.emptyMap(), Customer.class);
int updatedCnt = 0; 
for (Product product : products.getResult()) 
{ 
    try 
    { 
        product.setAttribute("myAttribute", false);
        updatedCnt++;
    } catch (Exception e) 
    { 
        System.out.println("failed to update product " + product.getPK() + " " + e.getMessage()); 
     }
} 
System.out.println("number updated = " + java.lang.Integer.toString(updatedCnt));

请注意,您仍然需要一些自定义逻辑来将您想要的产品的值设置为true,除非只能通过后台手动完成。

希望这有帮助, 塞巴斯蒂安