javax.jcr.nodetype.ConstraintViolationException: No matching property definition: PROPERTY

13,635

Solution 1

In jcr every node has a node-type (value of "jcr:primaryType").

Most node-types define a schema of properties that are allowed on that node. You cannot just add whatever property you like. It has to be defined in the schema. If you try to add and persist (commit) a property that is not defined, you get exactly this ConstraintViolationException.

So here's what likely happend: You've tried to create and store a property named "PROPERTY" on a node that has a strict schema, where that is not allowed.

If you provide more details what you tried to do exactly on what type of node, I may be able to pinpoint the problem.

Solution 2

If you want to add property to a nt:file for exemple, you have to define a new mixin type and add it to your node.

This way you can add every properties you want

This simpler way is to create a CND file to define all your properties

<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

and you have to register your new mixin (you only have to do this once)

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

and add it to your Node

node.addMixin( "mc:fileProperties" );

Here you can do

node.setProperty( "mc:String1", "Toto" );
session.save();
Share:
13,635
Mayur Desai
Author by

Mayur Desai

Updated on June 08, 2022

Comments

  • Mayur Desai
    Mayur Desai about 2 years

    When I am trying to set a property to my JCR node I am getting error

    javax.jcr.nodetype.ConstraintViolationException: No matching property definition: PROPERTY.

    I am a newbie to cq5. Please can someone help me to resolve this error?