将每个本地化的布尔属性值更新为 TRUE

Update every localized boolean attribute value to TRUE

我添加了一个新属性 "showFlag" with type="localized:java.lang.Boolean 到 itemtype VariantProduct 并将默认值设置为 TRUE.but 对于现有的变体产品,值来自 n/a。

我想将所有现有变体产品的所有语言(本地化)showFlag 值更新为 Yes.How 我可以这样做吗?

使用 bean shell 并使用 i18nService 遍历每种语言?

执行此操作的简单解决方案是使用类似这样的 groovy 脚本,

import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult
import de.hybris.platform.variants.jalo.VariantProduct


FlexibleSearchService flexibleSearchService=(FlexibleSearchService)spring.getBean("flexibleSearchService");
ModelService modelService=(ModelService)spring.getBean("modelService");

List<Locale> locals = Arrays.asList(Locale.getAvailableLocales()); 

queryString="Select {pk} from {variantProduct} ";

FlexibleSearchQuery query=new FlexibleSearchQuery(queryString);

SearchResult result=flexibleSearchService.search(query);


List<VariantProduct> products = result.getResult();

for(VariantProduct variantModel : products){

    for (Locale locale : locals){
        variantModel.setShowFlag(Boolean.TRUE,locale);
    }
    modelService.save(variantModel);
}

调整此代码以更符合您的需求,

希望对您有所帮助

您可以使用 impex 批处理模式以最快的方式更新所有这些。

UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;

以下 impex 导入脚本可以很好地解决上述问题:

UPDATE VariantProduct[batchmode=true];itemtype(code)[unique=true];showFlag[lang=en_GL];showFlag[lang=en_ZA];showFlag[lang=en_CA];showFlag[lang=en_US];showFlag[lang=en_AP];showFlag[lang=en_IN];showFlag[lang=en_CE];showFlag[lang=en_ME];showFlag[lang=en_SG];showFlag[lang=en_AU];showFlag[lang=en_PH];showFlag[lang=en_MA];showFlag[lang=en_GB];

;HenkelVariantProduct;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE