由于违反约束,节点 setProperty 在 Magnolia CMS 中给出了 RepositoryException

Posted

技术标签:

【中文标题】由于违反约束,节点 setProperty 在 Magnolia CMS 中给出了 RepositoryException【英文标题】:Node setProperty gives RepositoryException in Magnolia CMS due to Constraint Violation 【发布时间】:2020-01-09 15:34:48 【问题描述】:

我需要为一个节点设置以下所有属性,我得到一个 RepositoryException

'jcr:createdBy': 'admin'
'hideInNav': 'true'
'mgnl:template': 'something'
'jcr:created': '2020-01-09T14:14:13.555+01:00'
'mgnl:created': '2020-01-09T14:14:13.555+01:00'
'mgnl:createdBy': 'superuser'
'jcr:uuid': 'df7227a7-39e2-4e15-8d26-16b8b0657049'
'title': 'Sitemap'
'mgnl:lastModified': '2020-01-09T16:04:11.820+01:00'
'jcr:primaryType': 'mgnl:page'
'mgnl:lastModifiedBy': 'superuser'

这是我在循环中为节点设置上述属性的代码:

try 
     String value= (String)entry.getValue();
     node.setProperty(entry.getKey(), value);
           

 catch (ItemNotFoundException e) 
                // TODO Auto-generated catch block
            e.printStackTrace();
 catch (RepositoryException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();

RepositoryException 的堆栈跟踪是:

javax.jcr.nodetype.ConstraintViolationException: Unable to perform operation. Node is protected.
        at org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:276)
        at org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:248)
        at org.apache.jackrabbit.core.PropertyImpl.checkSetValue(PropertyImpl.java:278)
        at org.apache.jackrabbit.core.PropertyImpl.setValue(PropertyImpl.java:726)
        at org.apache.jackrabbit.core.NodeImpl$SetPropertyOperation.perform(NodeImpl.java:2058)
        at org.apache.jackrabbit.core.NodeImpl$SetPropertyOperation.perform(NodeImpl.java:2002)
        at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.NodeImpl.setProperty(NodeImpl.java:1924)
        at org.apache.jackrabbit.core.NodeImpl.setProperty(NodeImpl.java:1894)

有什么建议吗?您可以或不能设置哪些属性有任何限制吗?

【问题讨论】:

嗨,如果节点属性受到保护,也许您可​​以使用此方法检查:docs.adobe.com/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/…( (docs.adobe.com/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/…)) 【参考方案1】:

简单的答案是:不要。 您不应为任何 jcr:mgnl: 属性设置值。如果您尝试为提醒设置值,它将正常工作。

【讨论】:

以上是关于由于违反约束,节点 setProperty 在 Magnolia CMS 中给出了 RepositoryException的主要内容,如果未能解决你的问题,请参考以下文章

违反 UNIQUE KEY 约束;错误号:2627;输入数据没有重复[关闭]

JPA 中的参照完整性约束违反错误

ORA-02291: 违反完整约束条件 - 未找到父项关键字

Oracle违反约束数据的workaround

具有最小尺寸约束的聚类算法

oracle数据导入时,提示违反唯一约束性?