Indexing Intershop 7.10代码生成器备用密钥生成-非均匀

Indexing Intershop 7.10代码生成器备用密钥生成-非均匀,indexing,orm,intershop,Indexing,Orm,Intershop,我们注意到,在Intershop DB中,由于从7.9版迁移到7.10版,备用密钥的索引不会作为唯一索引生成。这会导致包含备用键(系统和自定义对象)的所有表在数据库中使用非唯一索引生成。例如: 另外,生成的.ddl文件代码(CatalogCategoryLinkPO.dbindex.oracle.ddl): 当我们尝试为自己的自定义实现对象创建备用键时,也会发生同样的情况。例如,这是.edl代码段: orm class A1PromotionBenefitPO extends Persiste

我们注意到,在Intershop DB中,由于从7.9版迁移到7.10版,备用密钥的索引不会作为唯一索引生成。这会导致包含备用键(系统和自定义对象)的所有表在数据库中使用非唯一索引生成。例如:

另外,生成的.ddl文件代码(CatalogCategoryLinkPO.dbindex.oracle.ddl):

当我们尝试为自己的自定义实现对象创建备用键时,也会发生同样的情况。例如,这是.edl代码段:

orm class A1PromotionBenefitPO extends PersistentObjectPO implements A1PromotionBenefit table "A1PromotionBenefit"
    {
        /**
         * Declare alternate key.
         */
        alternate key (promotionUUID, tariffUUID, contractType, contractBinding, domainID);

        /**
         * Holds link to tariff.
         */
        attribute tariffUUID : uuid required searchable;

        /**
         * Holds link to promotion.
         */
        attribute promotionUUID: uuid required;
....
...
这是生成的.ddl文件(A1PromotionBenefitPO.dbindex.oracle.ddl):

如您所见,备用键索引A1PROMOTIONBENEFIT_AK001生成为ununique


你知道为什么会这样吗?我们的代码依赖于备用键,因此我们不想一起从orm模型中删除备用键。

这似乎是7.10引入的一个bug。您应该向Intershop支持部门提交错误报告

作为一种解决方法,您当然可以更改生成的DDL文件。不确定是否最终可以更改ORMDDL.xpt,该文件用作生成这些DDL文件的模板


我在内部创建了一个bug,请在向Intershop支持部门提交bug报告时参考问题IS-26076。通过支持,您将获得状态更新。

我们昨天已经提交了一份错误报告-票证895-092。不确定我们现在是否可以添加参考。错误已经修复,应该在7.10的下一个每周发行版中提供。
orm class A1PromotionBenefitPO extends PersistentObjectPO implements A1PromotionBenefit table "A1PromotionBenefit"
    {
        /**
         * Declare alternate key.
         */
        alternate key (promotionUUID, tariffUUID, contractType, contractBinding, domainID);

        /**
         * Holds link to tariff.
         */
        attribute tariffUUID : uuid required searchable;

        /**
         * Holds link to promotion.
         */
        attribute promotionUUID: uuid required;
....
...
/*
 =============================================================================
 File: A1PromotionBenefitPO.dbindex.oracle.ddl
 Generated by JGen Code Generator from INTERSHOP Communications AG.
 =============================================================================
 The JGen Code Generator software is the property of INTERSHOP Communications AG. 
 Any rights to use are granted under the license agreement. 
 =============================================================================
 */

SET ECHO ON

SET SERVEROUTPUT ON SIZE 1000000

VARIABLE table_space      VARCHAR2(50)
VARIABLE recreate_indexes NUMBER;

EXEC :table_space := '&index_tablespace';
EXEC :recreate_indexes := '&recreate_indexes';

PROMPT /* Class hr.a1.orm.promotion.internal.A1PromotionBenefitPO */
PROMPT -- Foreign key indices
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_FK999', 'A1PROMOTIONBENEFIT', '(DISCOUNTUUID)', :table_space, 'NONUNIQUE', :recreate_indexes);
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_FK998', 'A1PROMOTIONBENEFIT', '(PROMOTIONUUID)', :table_space, 'NONUNIQUE', :recreate_indexes);


PROMPT -- Foreign key indices (dependencies)
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_FK997', 'A1PROMOTIONBENEFIT', '(DOMAINID)', :table_space, 'NONUNIQUE', :recreate_indexes);
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_FK996', 'A1PROMOTIONBENEFIT', '(TARIFFUUID)', :table_space, 'NONUNIQUE', :recreate_indexes);


PROMPT -- Inversion Entry key indices
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_IE001', 'A1PROMOTIONBENEFIT', '(PROMOTIONUUID,TARIFFUUID,CONTRACTTYPE,CONTRACTBINDING,DOMAINID)', :table_space, 'UNIQUE', :recreate_indexes);


PROMPT -- Searchable attribute indices
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_IE999', 'A1PROMOTIONBENEFIT', '(DOMAINID)', :table_space, 'NONUNIQUE', :recreate_indexes);
EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_IE998', 'A1PROMOTIONBENEFIT', '(TARIFFUUID)', :table_space, 'NONUNIQUE', :recreate_indexes);


EXEC staging_ddl.create_index('A1PROMOTIONBENEFIT_AK001', 'A1PROMOTIONBENEFIT', '(PROMOTIONUUID,TARIFFUUID,CONTRACTTYPE,CONTRACTBINDING,DOMAINID)', :table_space, 'NONUNIQUE', :recreate_indexes);