最近,我们已将Hybris 5.4迁移到Hybris 6.5,但自从它生成现有的PK(我们正在使用具有一些记录的相同数据库)。
在开发环境中,我们有:
但现在我们担心生产中会出现同样的问题,我们无法解决这个问题。
我们可以做些什么来让Hybris考虑旧的PK?
答案 0 :(得分:3)
检查名为'counter.pk.generator.class'的系统属性(例如在hac中),你有一个为Hybris项生成PK的类。打开该类并使用调试器来查看生成有什么问题。
答案 1 :(得分:1)
之前的评论说:
您是否针对特定类型遇到此问题?如是 !您可以考虑更改部署表numbre以获取新的PK。
这让我觉得改变PK生成的当前计数器将是解决方案,然后我准备了一个groovy脚本来做它。
例如,我们使用typecode定义了订单类型XML表示:45。
<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"/>
所以改变其计数器的groovy文件是:
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)
当前的解决方案,解决了Orders Table的问题。下一步是让所有表都能实现,如果我们使用表编号来获取所有现有的系列密钥,这将不会很困难。