1

我们正在将站点从 Intershop 6.4 迁移到 Intershop 7.9。正如 Intershop 支持所建议的那样,我们正在尝试从 EDL 模型重新创建所有自动生成的类。

这是接口EDL代码:

import "enfinity:/core/edl/com/intershop/beehive/core/types.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObject.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObjectPO.edl";

external PromotionCollection type "java.util.Collection<A1Promotion>";

namespace hr.a1.core.capi.promotion
{
    cartridge interface A1Promotion extends PersistentObject
    {
        /**
         * Promotion TMCode.
         */
        attribute tmCode: string required;

        /**
         * Siebel promotion id.
         */
        attribute siebelID: string required;

        /**
         * Promotion name.
         */
        attribute name: string required;

        /**
         * Promotion description / currently URL to CW.
         */
        attribute description: string;

        /**
         * Defines promotion priority / lower values first.
         */
        attribute priority: int;

        /**
         * Holds link to tariff.
         */
        attribute tariffID: uuid;

        /**
         * Contract type (A, M, R).
         */
        attribute contractType: string required;

        /**
         * Contract binding (0, 12, 24).
         */
        attribute contractBinding: string required;

        /**
         * Discount type / MF - monthly fee, HW - hardware, FU - free unit (not used at the moment)
         */
        attribute discountType: string required;

        /**
         * Discount mode / P - percentage or F - fixed amount
         */
        attribute discountMode: string;

        /**
         * Discount amount / either money value or percentage value / stored internally as Money
         */
        attribute discountAmount: Money;

        /*
         * Flag which if it set disables checkbox of current promotion so user can't deselect it.
         */
        attribute preselected: boolean;

        /**
         * Promotion validity / from date.
         */
        attribute activeFrom: datetime;

        /**
         * Promotion validity / to date.
         */
        attribute activeTo: datetime;

        /**
         * Promotion group / D - default, N - personalized, S% - Special
         */
        attribute promotionGroup: string required;

         /**
         * Promotion type / S - single, G - group
         */
        attribute promotionType: string required;

        /**
         * Free units amount type (MB, GB, SMS..)
         */
        attribute units: string;

        /**
         * Group rule defined for promotion if promotion is group promotion
         */
        attribute groupRule: string;

        /**
         * Name of the coupon list for the coupon promotions
         */
        attribute couponListName: string;

        /**
         * HW promotion discount id
         */
        attribute discountId: int; 
    }

}

这是 PO EDL 代码:

import "enfinity:/app_core_a1/edl/app_core_a1/capi/A1Promotion.edl";
import "enfinity:/xcs/edl/com/intershop/beehive/xcs/internal/product/ProductPO.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/types.edl";
import "enfinity:/core/edl/com/intershop/beehive/core/capi/domain/PersistentObjectPO.edl";

namespace hr.a1.core.internal.promotion
{
    /*
     * @author dragisic
     */
    orm class A1PromotionPO extends PersistentObjectPO implements A1Promotion table "A1Promotion"
    {
        /**
         * Promotion id.
         */
        attribute tmCode : string<25> required column "tm_code";

        /**
         * Siebel promotion id.
         */
        attribute siebelID : string<25> required column "siebel_id";

        /**
         * Promotion name.
         */
        attribute name : string<100> required column "name";

        /**
         * Promotion description / currently URL to CW.
         */
        attribute description : string<255> column "description";

        /**
         * Defines promotion priority / lower values first.
         */
        attribute priority : int column "priority";

        /**
         * Holds link to tariff.
         */
        attribute tariffID : uuid;

        /**
         * Contract type (A, M, R).
         */
        attribute contractType : string<1> required column "contract_type";

        /**
         * Contract binding (0, 12, 24).
         */
        attribute contractBinding : string<4> required column "contract_binding";

        /**
         * Discount type / MF - monthly fee, HW - hardware, FU - free unit (not used at the moment)
         */
        attribute discountType : string<2> required column "discount_type";

        /**
         * Discount mode / P - percentage or F - fixed amount
         */
        attribute discountMode : string<1> column "discount_mode";

        /**
         * Discount amount / either money value or percentage value / stored internally as Money
         */
        attribute discountAmount : Money column "discount_amount";

        /**
         * Flag which if it set disables checkbox of current promotion so user can't deselect it.
         */
        attribute preselected : boolean column "is_preselected";

        /**
         * Promotion validity / from date.
         */
        attribute activeFrom : datetime column "active_from";

        /**
         * Promotion validity / to date.
         */
        attribute activeTo : datetime column "active_to";

        /**
         * Promotion group / D - default, N - personalized, S% - Special
         */
        attribute promotionGroup : string<3> required column "promo_group";

         /**
         * Promotion type / S - single, G - group
         */
         attribute promotionType : string<1> required column "promo_type";

        /**
         * Free units amount type (MB, SMS..)
         */
        attribute units : string<4> column "units";

        /**
         * Group rule defined for promotion if promotion is group promotion
         */
        attribute groupRule : string<10> column "group_rule";

        /**
         * Name of the coupon list for the coupon promotions
         */
         attribute couponListName: string<100> column "coupon_list_name";

         /**
         * Defines HW promotion discount id.
         */
        attribute discountId : int column "discount_id";

        /**
         * Declare index in search items.
         */
        index (contractType, contractBinding);
    }
}

但是,当我们使用“Intershop 7.2 及更高版本的代码生成器”生成代码时,我们在自动生成的类 A1PromotionPOKey.java 中得到以下编译错误:

“构造函数 Object(String) 未定义” “A1PromotionPOKey 类型的层次结构不一致”

自动生成的类如下所示:

// =============================================================================
// File: A1PromotionPOKey.java
// Generated by JGen Code Generator from INTERSHOP Communications AG.
// Generator template: ORMKey.xpt(checksum: b5b09bf4e9329db7d7dafe870b159b0d)
// =============================================================================
// The JGen Code Generator software is the property of INTERSHOP Communications AG.
// Any rights to use are granted under the license agreement.
// =============================================================================
package hr.a1.core.internal.promotion;

import com.intershop.beehive.core.capi.domain.PersistentObjectPOKey;

/**
 * This class represents the primary key for objects of type A1PromotionPO.
 * The key objects can be used for lookup operations in the database.
 * 
 * @author dragisic
 * @generated
 */
public class A1PromotionPOKey extends PersistentObjectPOKey {
    /**
     * Useless constant to make compiler happy.
     *
     * @generated
     */
    private static final long serialVersionUID = 1L;

    /**
     * Creates an empty primary key. After creation of a new key object
     * you must call the corresponding set<i>Attribute</i> method(s) to 
     * set the value(s) of the primary key.
     *
     * @generated
     */
    public A1PromotionPOKey() {
    }

    /**
     * Creates a primary key with the specified value(s).
     *
     * @generated
     */
    public A1PromotionPOKey(
        String UUID) {
        super(UUID);
    }

}

我们检查了 gradle 依赖项,并且 PersistentObjectPOKey 导入看起来不错,并且包含的​​ jar 已添加到墨盒中。我们也尝试过重新启动 Studio 并刷新项目,但没有帮助。相同的 EDL 模型工作正常,并在 Enfinity Suite 6.4 中生成可编译的自动生成代码。

编辑:

此外,我在项目的 gradle 构建期间从控制台日志中附加了错误。

:app_core_a1:compileJavaC:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOKey.java:20: error: cannot access CacheClearKey
public class A1PromotionPOKey extends
       ^
  class file for com.intershop.beehive.cache.capi.common.CacheClearKey not found
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
                                             ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
                                           ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
                                             ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
                                           ^
warning: The following options were not recognized by any processor: '[componentName]'
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:11: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
import com.intershop.beehive.core.capi.common.Manager;
                                             ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:14: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
import com.intershop.beehive.core.capi.util.UUIDMgr;
                                           ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\capi\promotion\A1PromotionMgr.java:24: warning: [deprecation] Manager in com.intershop.beehive.core.capi.common has been deprecated
    Manager {
    ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPO.java:120: error: incompatible types: A1PromotionPOKey cannot be converted to PersistentObjectPOKey
        super(factory, key);
                       ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:82: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
        A1PromotionPO instance = (A1PromotionPO) getEngine().getPersistenceManager().createObject(key, getClassDescription());
                                                                                                  ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] UUIDMgr in com.intershop.beehive.core.capi.util has been deprecated
            UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
            ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] getInstance() in UUIDMgr has been deprecated
            UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
                   ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:110: warning: [deprecation] createUUIDString() in UUIDMgr has been deprecated
            UUIDMgr.getInstance().createUUIDString(), domain.getUUID(), tmCode, siebelID, name, contractType, contractBinding, discountType, promotionGroup, promotionType);
                                 ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:149: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
        return (A1PromotionPO) super.getObjectByPrimaryKeyObject(key);
                                                                 ^
C:\Work\VIPnet\a1webshop\app_core_a1\src\main\java\hr\a1\core\internal\promotion\A1PromotionPOFactory.java:178: error: incompatible types: A1PromotionPOKey cannot be converted to ORMObjectKey
        return (A1PromotionPO) super.getObjectByPrimaryKeyObject(key, mode);
4

0 回答 0