Hybris 生成现有 PK

Moh*_*bli 5 java sap-commerce-cloud

最近,我们已将 Hybris 5.4 迁移到 Hybris 6.5,但从那时起它就生成了现有的 PK(我们正在使用具有一些记录的同一数据库)。

在开发环境中,我们有:

  1. 删除所有现有记录。
  2. 重试保存操作,直到生成新的 PK。

但现在我们担心在生产中也会遇到同样的问题,我们无法采取这种解决方法。

我们怎样做才能让 Hybris 考虑到旧的 PK?

Moh*_*bli 3

之前的评论说:

对于特定类型,您是否遇到此问题?如果是 !您可以考虑更改部署表编号以获得新的PK。

这给了我一个想法,改变 PK 生成的当前计数器将是解决方案,然后我准备了一个常规脚本来做到这一点。

例如,我们使用 typecode : 45 定义了订单类型 XML 表示形式。

<itemtype code="Order" extends="AbstractOrder" jaloclass="de.hybris.platform.jalo.order.Order" generate="true" singleton="false" jaloonly="false" autocreate="true">
    <deployment table="orders" typecode="45"/>
Run Code Online (Sandbox Code Playgroud)

所以改变计数器的常规文件是:

import de.hybris.platform.core.Registry;
import de.hybris.platform.core.PK.PKCounterGenerator;
import de.hybris.platform.persistence.numberseries.SerialNumberGenerator;

int key = 45;
int current = new de.hybris.platform.core.DefaultPKCounterGenerator().fetchNextCounter(key);
SerialNumberGenerator generator = Registry.getCurrentTenant().getSerialNumberGenerator();
generator.removeSeries("pk_"+key);
generator.createSeries("pk_"+key,1,current*10)
Run Code Online (Sandbox Code Playgroud)

当前的解决方案仅解决了订单表的问题。下一步是让所有表都发生这种情况,如果我们使用表numberseries 来获取所有现有的serieskey,这并不困难。