【问题标题】:Document id reference desn't work for impex文档 ID 参考不适用于 impex
【发布时间】:2017-06-23 14:26:42
【问题描述】:

我对包含文档 ID 参考的 impex 有疑问。

来自文档: “特别是对于导入 partOf 项值,有必要通过通常的唯一列技术以外的方式引用这些项,因为 partOf 项通常不提供唯一键,而仅将其封闭的父项作为外键。”

*items.xml 中的项目(仅最重要的部分)

<itemtype code="A" autocreate="true" generate="true" abstract="true"/>

<itemtype code="B" autocreate="true" generate="true" extends="A">
    <deployment table="btable" typecode="20115" />
    <attributes>
        <attribute qualifier="code" type="java.lang.Integer" autocreate="true" generate="true">
         <persistence type="property"/>
         <modifiers optional="false"/>
    </attribute>
</attributes>
</itemtype>

<itemtype code="C" autocreate="true" generate="true">
    <deployment table="ctable" typecode="20117" />
    <attributes>
        <attribute qualifier="code" type="java.lang.String" autocreate="true" generate="true">
            <persistence type="property"/>
            <modifiers optional="false" unique="true"/>
        </attribute>
        <attribute qualifier="test" type="A" autocreate="true" generate="true">
            <persistence type="property"/>
            <modifiers optional="false" partof="true"/>
        </attribute>
    </attributes>
</itemtype>

Impex 代码:

INSERT B;code;&docIdRef
;1;docId

INSERT_UPDATE C;code[unique=true];test(&docIdRef)
;uniqueCode;docId

错误信息:

 cannot create C with values ItemAttributeMap[ registry:  null, type: <null>, (...) due to [de.hybris.platform.servicelayer.interceptor.impl.MandatoryAttributesValidator@3b777877]:missing values for [test] in model C

当我从“test”属性(C 类)中删除“partof”修饰符时,一切正常。

如果我想保留 'partof' 修饰符,我想知道 impex 应该是什么样子。

【问题讨论】:

    标签: sap hybris impex


    【解决方案1】:

    当您使用partOf 时,您必须使用所有者引用partOf

    确实如此:

    INSERT B;owner(C.code);&docIdRef
    ;uniqueCode;docId
    
    INSERT_UPDATE C;code[unique=true];test(&docIdRef)
    ;uniqueCode;docId
    

    您无需为B 分配标识符,只需引用所有者即可。

    【讨论】:

      【解决方案2】:

      如果您确定您的数据是正确的,您可以使用 [forceWrite=true] 修饰符或旧模式来跳过服务层验证。

      您还应该确保此配置是您真正需要的。将 optional 设置为 true 或将 partOf 设置为 false 或提供默认值也应该可以解决问题。

      【讨论】:

        【解决方案3】:

        由于您提到了partof="true",因此您不能分配A 类型的引用。您只能创建一个新实体。

        检查OOTB AbstractOrder2AbstractOrderEntry 关系,他们提到partof="true"AbstractOrderEntry 意味着您不能将任何其他AbstractOrderEntry 引用到Order。您可以随时创建新条目。

        也可以查看 HMC 网站

        您可以看到这里没有可用的+ Add Entry 按钮。 倒数是可能的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-13
          • 1970-01-01
          • 2012-07-30
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 2016-11-02
          相关资源
          最近更新 更多