2017-04-05 14 views
0

製品に追加する必要がある新しい属性(特別な??)があります。また、その属性の値が真である製品もあります。他のすべての人はその値を偽とします。Hybrisの製品グループの属性

我々は製品レベルでその属性を作成した場合....誰かが中に行くとバックオフィスに手動ですべての製品のためにその値を設定する必要があります....あまりにも多くの仕事..です

どれでもこれを処理するより良い方法は... ...製品のサブセットの製品グループを作成し、そのグループレベルでその属性を設定することはできますか? あなたが偽のデフォルト値で商品アイテムレベルで属性を宣言することができます:

  <attribute qualifier="myAttribute" type="java.lang.Boolean"> 
       <description>what it dodes</description> 
       <persistence type="property" /> 
       <defaultvalue>Boolean.FALSE</defaultvalue> 
      </attribute> 

これがためにそれを保証するようmaintanenceが容易になる...あなたが考えることができるいくつかのオプションが

答えて

0

あります新しく作成された製品ごとにデフォルト値はfalseです。 これは既存のインスタンスに値falseを設定しないことに注意してください。 既存のシステムにこの属性を追加すると(たとえば、移行の一環として)、次のようなことができます。あなたのコードでnull値をfalseとして扱うか、例えば、次のようにすることができます。移行の一環として実行されるbeanshellスクリプトを作成します。このスクリプトは、まだ値がnullに設定されているすべての製品を更新します(http://experts.hybris.com/answers/3446/view.html参照)。

HYBRISの専門家フォーラム上のリンクの答えから変更された(しかし:)テストしていません)/コピー:あなたはまだ製品に値をtrueに設定するためにいくつかのカスタム・ロジックが必要になり

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)); 

(注)その属性が真であることを望みます(ただし、バックオフィスを介して手動でのみ行われる場合を除きます)。

希望します。 セバスチャン

関連する問題