Java 将每个本地化布尔属性值更新为TRUE
我已将type=“localized:java.lang.Boolean”的新属性“showFlag”添加到itemtype VariantProduct中,并将默认值设置为TRUE。但对于现有的VariantProduct,该值为n/a。Java 将每个本地化布尔属性值更新为TRUE,java,hybris,impex,Java,Hybris,Impex,我已将type=“localized:java.lang.Boolean”的新属性“showFlag”添加到itemtype VariantProduct中,并将默认值设置为TRUE。但对于现有的VariantProduct,该值为n/a。 我想更新所有现有变体产品的所有语言(本地化)将值显示为“是”。如何做到这一点?使用bean shell并使用I18N服务迭代每种语言?使用bean shell并使用I18N服务迭代每种语言?实现这一点的简单解决方案是使用类似这样的groovy脚本 impo
我想更新所有现有变体产品的所有语言(本地化)将值显示为“是”。如何做到这一点?使用bean shell并使用I18N服务迭代每种语言?使用bean shell并使用I18N服务迭代每种语言?实现这一点的简单解决方案是使用类似这样的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);
}
import de.hybris.platform.servicelayer.model.ModelService;
导入de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
导入de.hybris.platform.servicelayer.search.FlexibleSearchService;
导入de.hybris.platform.servicelayer.search.SearchResult
导入de.hybris.platform.variants.jalo.VariantProduct
FlexibleSearchService FlexibleSearchService=(FlexibleSearchService)spring.getBean(“FlexibleSearchService”);
ModelService ModelService=(ModelService)spring.getBean(“ModelService”);
List locals=Arrays.asList(Locale.getavailablecales());
queryString=“从{variantProduct}中选择{pk}”;
FlexibleSearchQuery查询=新建FlexibleSearchQuery(queryString);
SearchResult=flexibleSearchService.search(查询);
List products=result.getResult();
对于(VariantProduct variantModel:products){
for(区域设置:本地){
variantModel.setShowFlag(Boolean.TRUE,区域设置);
}
modelService.save(variantModel);
}
调整此代码以满足您的需要
希望这有帮助实现这一点的简单解决方案是使用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);
}
import de.hybris.platform.servicelayer.model.ModelService;
导入de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
导入de.hybris.platform.servicelayer.search.FlexibleSearchService;
导入de.hybris.platform.servicelayer.search.SearchResult
导入de.hybris.platform.variants.jalo.VariantProduct
FlexibleSearchService FlexibleSearchService=(FlexibleSearchService)spring.getBean(“FlexibleSearchService”);
ModelService ModelService=(ModelService)spring.getBean(“ModelService”);
List locals=Arrays.asList(Locale.getavailablecales());
queryString=“从{variantProduct}中选择{pk}”;
FlexibleSearchQuery查询=新建FlexibleSearchQuery(queryString);
SearchResult=flexibleSearchService.search(查询);
List products=result.getResult();
对于(VariantProduct variantModel:products){
for(区域设置:本地){
variantModel.setShowFlag(Boolean.TRUE,区域设置);
}
modelService.save(variantModel);
}
调整此代码以更符合您的需要
希望这对您有所帮助您可以使用impex批处理模式以最快的方式更新它们
UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
您可以使用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
对于上述问题,以下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
使用script/flexible query,您可以迭代所有模型并为所有本地设置true使用script/flexible query,您可以迭代所有模型并为所有本地设置true此方法似乎更好。此方法似乎更好。