Moh*_*bli 5 java sap-commerce-cloud
最近,我们已将 Hybris 5.4 迁移到 Hybris 6.5,但从那时起它就生成了现有的 PK(我们正在使用具有一些记录的同一数据库)。
在开发环境中,我们有:
但现在我们担心在生产中也会遇到同样的问题,我们无法采取这种解决方法。
我们怎样做才能让 Hybris 考虑到旧的 PK?
之前的评论说:
对于特定类型,您是否遇到此问题?如果是 !您可以考虑更改部署表编号以获得新的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,这并不困难。