2016-09-03 4 views
1

Когда я пытаюсь установить свойство моего узел JCR я получаю ошибкуjavax.jcr.nodetype.ConstraintViolationException: Нет определение соответствия объекта: СОБСТВЕННОСТЬ

javax.jcr.nodetype.ConstraintViolationException: Нет соответствие недвижимости определение: НЕДВИЖИМОСТЬ.

Я новичок в cq5. Пожалуйста, помогите мне решить эту ошибку?

+0

Вы можете добавить свой код на вопрос –

ответ

4

В jcr каждый узел имеет node-type (значение «jcr: primaryType»).

Большинство типов узлов определяют схему свойств, разрешенных на этом узле. Вы не можете просто добавить любое свойство, которое вам нравится. Он должен быть определен в схеме. Если вы попытаетесь добавить и сохранить (зафиксировать) свойство, которое определено , а не, вы получите именно это ConstraintViolationException.

Итак, вот что, вероятно, произошло: вы пытались создать и сохранить свойство с именем «PROPERTY» на узле с строгой схемой, где это запрещено.

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

+2

дополнение к тому, если вы используете нт: неструктурированный как JCR: primaryType, вы должны быть в состоянии установить практически любое имя свойства. Хотя все еще могут быть некоторые зарезервированные имена, которые вообще не разрешены. – Thomas

+0

Спасибо за помощь! Ценить это! –

0

Если вы хотите добавить объект в nt:file для примера, вы должны определить новый тип mixin и добавить его в свой узел.

Таким образом, вы можете добавить каждые свойства, которые вы хотите

Это простой способ создать файл CND, чтобы определить все свойства

<mc = 'http://myCompany.com/mc'> 
[mc:fileProperties] 
    mixin 
     - mc:String1 (string)version 
     - mc:String2 (string) version 
     - mc:String3 (string) version 
     - mc:LongString1 (string) version 
     - mc:Date1 (date) version 
     - mc:Date2 (date) version 
     - mc:Number1 (long) version 
     - mc:Number2 (long) version 
     - mc:Boolean1 (boolean) version 
     - mc:Boolean2 (boolean) version 
     - mc:Choice1 (long) version 

и вы должны зарегистрировать новый подмешать (у вас есть только сделать это один раз)

JackrabbitNodeTypeManager manager = (JackrabbitNodeTypeManager)session.getWorkspace().getNodeTypeManager(); 
InputStream cndFile = ... // Get you CND file 
JackrabbitNodeTypeManager.TEXT_X_JCR_CND); 

и добавить его в узел

node.addMixin("mc:fileProperties"); 

Здесь вы можете сделать

node.setProperty("mc:String1", "Toto"); 
session.save();