我們有一個新屬性(特殊??)需要添加到產品中。只有一些產品具有該屬性的值爲真。所有其他人都認爲這個價值是假的。Hybris屬於產品組
如果我們在創造一個產品級別屬性....總要有人去,並在後臺....這是太辛苦了手動設置值的所有產品..
任何更好的方法來處理這個問題?......我們可以爲產品子集創建一個產品組,然後在該組級別設置該屬性?使成爲保養的方便......
我們有一個新屬性(特殊??)需要添加到產品中。只有一些產品具有該屬性的值爲真。所有其他人都認爲這個價值是假的。Hybris屬於產品組
如果我們在創造一個產品級別屬性....總要有人去,並在後臺....這是太辛苦了手動設置值的所有產品..
任何更好的方法來處理這個問題?......我們可以爲產品子集創建一個產品組,然後在該組級別設置該屬性?使成爲保養的方便......
有您可以考慮幾個選擇: 您可以用默認值false聲明對產品項目級屬性:
<attribute qualifier="myAttribute" type="java.lang.Boolean">
<description>what it dodes</description>
<persistence type="property" />
<defaultvalue>Boolean.FALSE</defaultvalue>
</attribute>
這將保證對每個新創建的產品默認值都是false。 請注意,這不會將false值設置爲任何現有實例。 如果您將此屬性添加到現有系統(例如,作爲遷移的一部分),您可以在你的代碼中將空值視爲假,或者你可以編寫一個beanshell腳本作爲遷移的一部分執行一次,該遷移將更新所有值仍然爲空的產品(請參閱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你的產品希望這個歸屬是真實的(除非這只是通過後臺手動完成的)。
希望這會有幫助, Sebastian