You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用DefaultCatalogSynchronizationService同步时Cron Job报Entity not found错误

Hybris目录同步代码调用失败(Job实体找不到)排查思路

问题背景

通过代码调用DefaultCatalogSynchronizationService.synchronizeFully(source, target)执行全量目录同步时,触发的定时任务持续失败,报错如下:

ERROR [hybrisHTTP2] (0000009D) [Job] Caught throwable Entity not found ( pk = 
8796096201204 name = 'de.hybris.platform.persistence.processing_Job' type code = 
'500' db table = 'jobs'): object no longer valid
de.hybris.platform.jalo.JaloSystemException: Entity not found ( pk = 8796096201204 
name = 'de.hybris.platform.persistence.processing_Job' type code = '500' db table = 
'jobs'): object no longer valid[HY--1]
at de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob.configureFullVersionSync(CatalogVersionSyncJob.java:502)
at de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob.performCronJob(CatalogVersionSyncJob.java:840)
at de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1396)
at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:805)
at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:720)
at de.hybris.platform.cronjob.jalo.Job.perform(Job.java:632)
at de.hybris.platform.servicelayer.cronjob.impl.DefaultCronJobService.performCronJob(DefaultCronJobService.java:81)
at de.hybris.platform.catalog.synchronization.DefaultCatalogSynchronizationService.synchronizeFully(DefaultCatalogSynchronizationService.java:74)

但通过Backoffice手动执行同步一切正常,移除产品中名为Exploded drawing的图片字段值后,代码调用的同步也能正常执行。

排查思路

  • 检查图片字段的同步规则配置
    确认Exploded drawing对应的Media类型属性在目录同步规则(CatalogVersionSyncJob的syncItems配置)中是否存在特殊处理:比如是否开启了强制同步,但关联的Media实体已被删除,导致同步时尝试引用已失效的Media处理Job;对比Backoffice手动同步的Job配置和代码自动生成的临时Job配置,看是否存在参数差异(如Media异步处理开关、关联任务配置)。

  • 验证Media实体及关联关系
    查询Exploded drawing字段关联的Media实体状态:检查其在medias表中是否存在、p_state是否为正常状态;确认该Media是否关联了异步处理Job(如MediaConversionJob),若关联的Job已被删除但Media的关联字段未更新,同步时会触发实体找不到的错误。

  • 分析自动生成同步Job的生命周期
    代码调用synchronizeFully会自动创建临时的CatalogVersionSyncJob和CronJob,检查这些临时Job的创建逻辑:是否在处理包含特殊Media字段的产品时,错误引用了缓存中残留的旧Job PK;对比正常(移除图片字段)和异常场景下自动生成Job的参数差异,重点关注Media相关的任务配置。

  • 排查事务与缓存问题
    确认代码调用时的事务上下文是否与Backoffice不同:比如是否在事务未提交时触发同步,导致Media实体状态未持久化,同步Job尝试引用未提交的实体关联Job;清理Hybris缓存(区域缓存、查询缓存),验证是否是缓存残留了已删除的Job实体数据。

  • 追踪同步Job的配置逻辑
    查看CatalogVersionSyncJob.configureFullVersionSync方法(报错栈第502行)的具体逻辑,确认处理Media字段时是否会获取关联的处理Job,且该Job已失效;启用Hybris调试日志,打印自动生成Job的所有参数和关联实体,对比正常与异常场景的差异。

内容的提问来源于stack exchange,提问作者Gothiquo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:10:34