【问题标题】:Entity not found when running cron job运行 cron 作业时找不到实体
【发布时间】:2022-10-08 07:58:55
【问题描述】:

我尝试调用该方法同步满班级的DefaultCatalogSynchronizationService从我的代码应该从源目录同步到目标目录。
当我使用后台时,一切正常,但当我使用我的代码时,一切都出错了。
此类调用的 cron 作业每次都失败,我收到以下错误:

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)

任何想法?

更新:
这是我在我的一个类中调用的代码(CatalogSynchronizationService 是 hybris 的标准类)

this.catalogSynchronizationService.synchronizeFully(source, target);

更新 2:
当我从产品中删除名为Exploded drawing(其中包含产品图片)的字段的值时,同步似乎工作正常。

【问题讨论】:

  • 请发布您的代码 sn-p 以获得更多可见性。
  • @RaushanKumar我添加了我的代码,这只是我称之为标准类hybris的一行。 Source 和 Target 都是 CatalogVersion 模型。

标签: java spring spring-mvc sap-commerce-cloud


【解决方案1】:

我解决了这个问题,所以我会发布答案以防将来有人需要它:

final CatalogVersionSyncJobModel syncJobModel = (CatalogVersionSyncJobModel) catalogSynchronizationService .getSyncJob(source, target, code);    
catalogSynchronizationService.performSynchronization(Collections.singletonList(product), syncJobModel, getSyncConfig());

【讨论】:

    【解决方案2】:

    使用本地会话上下文以编程方式运行同步作业,如下所示。

    return getSessionService().executeInLocalView(new SessionExecutionBody()
            {
                @Override
                public Object execute()
                {
                    this.catalogSynchronizationService.synchronizeFully(source, target);
               return true;
                }
            });
    

    或使用

    synchronizeFullyInBackground(final CatalogVersionModel source, final CatalogVersionModel target)
    

    【讨论】:

    • 不幸的是我得到了同样的例外错误 [hybrisHTTP3] (000001JK) [Job] 未找到捕获的可抛出实体(pk = 8796125823476 名称 = 'de.hybris.platform.persistence.processing_Job' 类型代码 = '500' db table = 'jobs'):对象不再有效de.hybris.platform.jalo.JaloSystemException:找不到实体(pk = 8796125823476 名称 = 'de.hybris.platform.persistence.processing_Job' 类型代码 = '500' db table = 'jobs'):对象不再有效 [HY --1]
    • 我找到了一个对我有用的解决方法:final SyncItemJob syncJob = CatalogManager.getInstance().getSyncJob(source, target); final SyncItemJobModel syncJobModel = modelService.get(syncJob); catalogSynchronizationService.performSynchronization( Collections.singletonList(product), syncJobModel, getSyncConfig());
    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多