Hybris中CatalogSynchJob的Copy by value是什么?属性设为true后如何工作?
什么是CatalogSynchJob的Copy by value功能
Hybris目录同步的核心逻辑是将暂存(Staged)目录版本的内容同步到线上(Online)目录版本,对于引用类型属性(比如关联的商品、分类、媒体资源等),默认同步策略为复用引用:即线上版本的属性直接指向暂存版本关联的同一个Item实例,不会生成独立副本。Copy by value是专门针对引用类型属性的同步策略配置项,开启后同步时不会复用原引用的Item,而是会将关联的Item也复制一份到目标目录版本,生成完全独立的新实例。该配置仅对归属于目录版本管辖的引用类型属性生效,非引用类型(字符串、数字等)、非目录类Item(用户、订单等)的属性不受该配置影响。
自定义属性设置Copy by value=true后的执行逻辑
当你给自定义引用属性开启该配置后,CatalogSynchJob执行时会按照以下逻辑处理该属性:
- 同步主Item(比如你正在同步的商品、分类)时,首先识别该自定义属性为目录管辖类引用属性且开启了
Copy by value=true,跳过默认的引用复用逻辑 - 校验该属性关联的源侧引用Item是否已经在目标目录版本存在对应同步副本:
- 无对应副本:优先触发该引用Item的全量同步逻辑,在目标目录版本生成独立的新Item实例,再将主Item的自定义属性指向这个新生成的副本
- 已有对应副本:先对比源侧引用Item与目标侧副本的属性差异,完成副本的属性更新后,再将主Item的自定义属性指向该副本
- 同步完成后,源侧引用Item与目标侧副本为完全独立的两个实例,后续源侧引用Item的修改、删除操作不会自动同步到目标侧副本,只有当你重新同步主Item时,才会触发该引用属性对应副本的更新逻辑。
注意:如果你的自定义属性引用的是不归属于任何目录版本的Item(比如用户、地址、订单类数据),该配置不会生效,同步时始终会直接复用原引用。
内容的提问来源于stack exchange,提问作者Priyanka Gupta
相关产品推荐
相关产品推荐

