2017-04-05 35 views
0

我們有一個新屬性(特殊??)需要添加到產品中。只有一些產品具有該屬性的值爲真。所有其他人都認爲這個價值是假的。Hybris屬於產品組

如果我們在創造一個產品級別屬性....總要有人去,並在後臺....這是太辛苦了手動設置值的所有產品..

任何更好的方法來處理這個問題?......我們可以爲產品子集創建一個產品組,然後在該組級別設置該屬性?使成爲保養的方便......

回答

0

有您可以考慮幾個選擇: 您可以用默認值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