hybris - 将 Hybris Impex Remove 与灵活搜索相结合
问题描述
我想使用 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 运行导入,并且我想事先删除所有现有项目。欢迎替代解决方案。
解决方案
导入查询 -
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'}})"");"
不工作,因为您没有选中启用代码执行复选框。此外,正如@BM 所建议的那样,如果未选中该复选框,则将脚本替换为impex.includeSQLData()
and#% impex.initDatabase()
不会有任何效果。但是,选中复选框并运行上述脚本会出错,因为类中没有名称方法(在运行导入时调用)。该方法可用于(在运行导出而不是导入时调用)。现在,在export中运行这个 impex 脚本将成功执行,没有任何错误,但是exportItemsFlexibleSearch
MyImpExImportReader
exportItemsFlexibleSearch
DeprecatedExporter
它不会删除任何东西。相反,它将创建一个带有 impex 和脚本文件的zip文件。此脚本文件将具有 impex 标头,用于删除查询返回的项目。使用这个 zip 文件,我们可以有条件地删除这些项目。
转到 HMC -> Cronjobs -> 创建类型的新 cronjob
Impex import job
-> 在媒体属性中上传 zip 文件 -> 创建 -> 运行 impex。
这将删除查询返回的项目。
还有另一种删除查询选择的项目的方法。
推荐阅读
- mysql - Redshift 表使用 75GB 磁盘,而 Mysql 上的等效表使用 40GB
- reactjs - 未捕获(承诺中)错误:网络错误:无法获取
- vue.js - vuejs中的条件显示
- cuda - 有没有办法将 128 位从内存直接加载到寄存器?
- flutter - 如何删除颤振中的换行符?
- javascript - 超级菜单 div 在悬停时隐藏 | 反应
- spring - 获取异常 org.springframework.beans.factory.UnsatisfiedDependencyException:
- php - WooCommerce 使用批量操作触发订单保存
- javascript - 找不到模块 'D:\@craco\craco\bin\craco.js',React,Craco
- airtable - 如何使用 IN 关键字查询 Airtable 以过滤记录?