我嘗試從我的代碼中呼叫DefaultCatalogSynchronizationService類的方法synchronizeFull ,該代碼應該從源目錄同步到目標目錄。
當我使用后臺時,一切正常,但當我使用我的代碼時,一切都出錯了。
此類呼叫的 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
uj5u.com熱心網友回復:
使用本地會話背景關系以編程方式運行同步作業,如下所示。
return getSessionService().executeInLocalView(new SessionExecutionBody()
{
@Override
public Object execute()
{
this.catalogSynchronizationService.synchronizeFully(source, target);
return true;
}
});
或使用
synchronizeFullyInBackground(final CatalogVersionModel source, final CatalogVersionModel target)
uj5u.com熱心網友回復:
我解決了這個問題,所以我會發布答案以防將來有人需要它:
final CatalogVersionSyncJobModel syncJobModel = (CatalogVersionSyncJobModel) catalogSynchronizationService .getSyncJob(source, target, code);
catalogSynchronizationService.performSynchronization(Collections.singletonList(product), syncJobModel, getSyncConfig());
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/508395.html
