我想使用Impex从表中删除一些项目。下面的示例不会引发错误,但不会移除任何内容。
REMOVE ProductReference;pk[unique=true]
"#% impex.exportItemsFlexibleSearch(""select {pk} from {ProductReference as pr} where {pr.referenceType}=( {{select {pk} from {ProductReferenceTypeEnum as prte} where {prte.code} = 'CROSSELLING'}})"");"查询会产生预期的结果。REMOVE是否与灵活搜索不兼容,或者我是否遗漏了什么?
问题是,我正在通过hotfolder运行导入,并且我想要预先删除所有现有的项目。欢迎使用其他解决方案。
发布于 2019-02-24 15:34:09
导入查询-
REMOVE ProductReference;pk[unique=true]
"#% impex.exportItemsFlexibleSearch(""select {pk} from {ProductReference as pr} where {pr.referenceType}=( {{select {pk} from {ProductReferenceTypeEnum as prte} where {prte.code} = 'CROSSELLING'}})"");"不起作用,因为您尚未选中“启用代码执行”复选框。

此外,正如@B.M所建议的那样,如果没有选中复选框,用impex.includeSQLData()和#% impex.initDatabase()替换脚本不会有任何效果。
但是,选中复选框并运行上面的脚本将显示错误,因为在类MyImpExImportReader中没有名为exportItemsFlexibleSearch的方法(在运行导入时调用)。
exportItemsFlexibleSearch方法在DeprecatedExporter中可用(在运行export时调用)。
现在,在导出中运行此impex脚本将成功执行,没有任何错误,,但它不会删除任何内容。相反,它将创建一个带有impex和脚本文件的zip文件。此脚本文件将具有impex标头,用于删除查询返回的项。使用这个zip文件,我们可以有条件地删除这些项目。
转到HMC -> cronjob ->创建类型为
Impex import job的新cronjob ->上载介质属性中的压缩文件->创建->运行impex。
这将删除查询返回的项。
还有另一种删除查询所选项目的方法。
发布于 2019-09-20 17:22:59
我们需要导出脚本以生成导入脚本的压缩文件,并且需要在选中启用代码执行的情况下导入媒体file.Resultant压缩文件
或者,也可以执行groovy脚本,例如:
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
flexibleSearchService = spring.getBean("flexibleSearchService")
modelService = spring.getBean("modelService")
query = "select {pk} from {trigger}";
flexibleSearchService.search(query).result.each
{
modelService.remove(it)
}https://stackoverflow.com/questions/54826964
复制相似问题