首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Hybris Remove与灵活的搜索相结合

将Hybris Remove与灵活的搜索相结合
EN

Stack Overflow用户
提问于 2019-02-22 20:15:56
回答 2查看 7.5K关注 0票数 1

我想使用Impex从表中删除一些项目。下面的示例不会引发错误,但不会移除任何内容。

代码语言:javascript
复制
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运行导入,并且我想要预先删除所有现有的项目。欢迎使用其他解决方案。

EN

回答 2

Stack Overflow用户

发布于 2019-02-24 15:34:09

导入查询-

代码语言:javascript
复制
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。

这将删除查询返回的项。

还有另一种删除查询所选项目的方法。

票数 3
EN

Stack Overflow用户

发布于 2019-09-20 17:22:59

我们需要导出脚本以生成导入脚本的压缩文件,并且需要在选中启用代码执行的情况下导入媒体file.Resultant压缩文件

或者,也可以执行groovy脚本,例如:

代码语言:javascript
复制
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)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54826964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档