2017-02-06 1 views
1

У меня проблема с impex, которая содержит ссылку на идентификатор документа.Ссылка на документ 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.plat[email protected]3b777877]:missing values for [test] in model C 

Когда я снял 'partof' модификатор из атрибута 'test' (класс C) все работало нормально.

Интересно, как impex должен выглядеть, если я хочу сохранить модификатор «partof».

ответ

0

Если вы точно знаете, что ваши данные верны, вы можете использовать модификатор [forceWrite = true] или устаревший режим, чтобы пропустить проверку уровня сервиса.

Вы также должны убедиться, что эта конфигурация - это то, что вам действительно нужно. Если установить значение false, либо значение false, либо значение по умолчанию, должно быть исправлено.

0

Поскольку вы упомянули partof="true", вы не можете назначить ссылку типа A. Вы можете создать только новый объект.

Проверьте OOTB AbstractOrder2AbstractOrderEntry отношения, они упоминали partof="true" для AbstractOrderEntry означает, что вы не можете ссылаться на любой другой AbstractOrderEntry к Order. Вы всегда можете создать новую запись.

Посмотрите на сайте HMC, а

enter image description here

Вы можете увидеть здесь нет + Add Entry кнопки доступна здесь. Ответ может быть возможен.

0

При использовании partOf вы должны указать partOf используя владельца.

Так он делает:

INSERT B;owner(C.code);&docIdRef 
;uniqueCode;docId 

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

Вам не нужно назначать B идентификатор, вам просто нужно ссылаться на владельца.