java - Jackrabbit 更新或合并节点

标签 java jackrabbit jcr

我已经向 jackrabbit 用户列表发送了相同的消息,但没有人回复我。

我想使用 Jackrabbit 2.4.3 更新一个节点及其子节点,抛出 jackrabbit-jcr2dav。 (就像合并:更新、创建或删除节点)。

但是当我更新存储库中已存在的属性时,日志中出现错误,并且没有保存任何内容。这不是异常,只是一个错误。

[错误] org.apache.jackrabbit.jcr2spi.hierarchy.ChildNodeEntriesImpl:176 - ChildInfo 迭代器包含多个具有相同名称|索引或 uniqueID 的条目 -> 忽略 ChildNodeInfo。

我的代码:

存储库repository = JcrUtils.getRepository(jcrUrl); session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

    try { 
        String user = session.getUserID(); 
        String repositoryname = repository.getDescriptor(Repository.REP_NAME_DESC); 
        LOGGER.debug( "Logged in as " + user + " to a " + repositoryname + " repository.");


        // Retrieve content 
        StringBuilder expression = new StringBuilder();
        expression.append("SELECT * FROM [nt:unstructured] AS mynode ");
        expression.append("WHERE id = "+ mynode.getId() +" " );

        QueryManager queryMgr = session.getWorkspace().getQueryManager();
        Query query = queryMgr.createQuery(expression.toString(),Query.JCR_SQL2);
        QueryResult result = query.execute();
        RowIterator rowIterator = result.getRows();

        if (rowIterator.hasNext() ) {
            Node node = rowIterator.nextRow().getNode();

            // Store metadata content 
            node.setProperty("description", mynode.getDescription());
            node.setProperty("keywords", mynode.getKeywords());
            node.setProperty("title", mynode.getTitle());   // ERROR IN THE LOG AT THIS LINE because description and keywords doesn't exist, but title already exist.
            node.setProperty("resume", mynode.getResume()); 

            [... updating childs node here ]

            session.save(); 

        }
    } catch ( RepositoryException e) {
        LOGGER.error("Error getting data", e);
        throw e;
    } finally { 
        session.logout(); 
    }
    return book;
} 

有人已经尝试更新节点属性吗?

谢谢

最佳答案

最后,我确认同一父节点下的两个节点应具有相同的名称。这就是为什么我有这个错误。 没有相同的名称,我的代码可以正常工作。

关于java - Jackrabbit 更新或合并节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13692511/

相关文章:

java - 重新渲染包含字段和标记的区域而不使用丰富的:panel?

java - 在改造中发送仅包含字符串的 JSONArray

Java - 当没有用户输入时防止出现错误消息 - 作业

aem - javax.jcr.InvalidItemStateException : Item cannot be saved

jackrabbit - 有没有可以直接编辑Jackrabbit存储库内容的工具?

java - 使用 magnolia cms 在 tomcat 中部署新 war

xpath - 如何使用XPath JCR查询访问jcr:root

java - 分割一行字符串

用于数据迁移的 Hadoop

java - 使用 JCR 与 J2EE 客户端服务器环境中的各种内容存储库进行交互的标准接口(interface)