Jackrabbit更新或合并节点 - java

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

我想用Jackrabbit 2.4.3更新一个节点和他的孩子抛出jackrabbit-jcr2dav。 (例如合并:更新,创建或删除节点)。

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

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

我的代码:

仓库信息库= JcrUtils.getRepository(jcrUrl);
会话会话= 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大神给出的解决方案

最后,我确认同一父节点下的两个节点应注意具有相同的名称。这就是为什么我有此错误。
没有相同的名称,我的代码正在运行。

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

从方法返回数组-Java - java

private static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…

JAVA:如何检查对象数组中的所有对象是否都是子类的对象? - java

我有一个对象数组。现在,我要检查所有这些对象是否都是MyObject的实例。有没有比这更好的选择:boolean check = true; for (Object o : justAList){ if (!(o instanceof MyObject)){ check = false; break; } } java大神给出的解决方案 如果您不喜欢循环,则…