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