2013-07-23 3 views
0

Я добавляю дочерний узел «soc: music» (nt: file) (тот же, что и исходный узел «soc: avatar») в профиль exoplatform но он не работает, когда хранится в JCR. Я Google ошибка, кажется, мало упоминает об этом. Вы знаете, как это исправить? Благодарю. Странно, что оригинальный узел «soc: avatar» работает хорошо.Тип узла JCR nt: файл не разрешен как тип дочернего узла для типа родительского узла

<nodeType name="soc:profiledefinition" isMixin="false" hasOrderableChildNodes="false"> 
... 
    <childNodeDefinition name="soc:avatar" defaultPrimaryType="nt:file" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="false"> 
    <requiredPrimaryTypes> 
     <requiredPrimaryType>nt:file</requiredPrimaryType> 
    </requiredPrimaryTypes> 
    </childNodeDefinition> 

.. 
    <childNodeDefinition name="soc:music" defaultPrimaryType="nt:file" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="false"> 
    <requiredPrimaryTypes> 
     <requiredPrimaryType>nt:file</requiredPrimaryType> 
    </requiredPrimaryTypes> 
    </childNodeDefinition> 
</childNodeDefinitions> 

----- Ошибка message--

2013-07-23 10:58:27,401 | ERROR | Error during the processAction phase [portal:UIPortalApplication<http-nio-0.0.0.0-8080-exec-1>] 
org.chromattic.api.UndeclaredRepositoryException: javax.jcr.nodetype.ConstraintViolationException: Can't add node soc:music to /production/soc:provid 
rs/soc:organization/soc:test1/soc:profile node type nt:file is not allowed as child's node type for parent node type 
     at org.chromattic.core.DomainSession.persist(DomainSession.java:470) ~[chromattic.core-1.2.1.jar:na] 
     at org.chromattic.core.ObjectContext.addChild(ObjectContext.java:236) ~[chromattic.core-1.2.1.jar:na] 
     at org.chromattic.core.mapper.onetoone.hierarchical.JCRNamedChildParentPropertyMapper.set(JCRNamedChildParentPropertyMapper.java:90) ~[chroma 
tic.core-1.2.1.jar:na] 
     at org.chromattic.core.mapper.PropertyMapper$2.invoke(PropertyMapper.java:88) ~[chromattic.core-1.2.1.jar:na] 
     at org.chromattic.core.ObjectContext.invoke(ObjectContext.java:74) ~[chromattic.core-1.2.1.jar:na] 
     at org.exoplatform.social.core.chromattic.entity.ProfileEntity_Chromattic.setMusic(ProfileEntity_Chromattic.java:102) ~[social-component-core 
4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT] 
     at org.exoplatform.social.core.storage.impl.IdentityStorageImpl._saveProfile(IdentityStorageImpl.java:621) ~[social-component-core-4.0.0-SNAP 
HOT.jar:4.0.0-SNAPSHOT] 

ответ

1

Будьте осторожны при изменении определения NODETYPE, как это, он может эффекты к существующим данным в системе. Вы должны подумать о «миграции» для этой модификации. Мы используем Chromattic, поэтому определение nodetype должно отображаться с помощью класса java. Вы изменили soc: profiledefinition, поэтому вы должны добавить soc: music определение в ProfileEntity.java также (в пакете org.exoplatform.social.core.chromattic.entity).

Надеется, что это помогает, Minh

+0

Спасибо. На самом деле, я добавил определение soc: music в ProfileEntity.java, но не могу пройти проверку. Так что временно, я жестко программирую, чтобы не проверять новый дочерний узел soc: music в коде. –

Смежные вопросы