jackrabbit - JCR Jackrabbit 版本控制

标签 jackrabbit jcr

您好,我正在尝试恢复节点的版本。但出了点问题:

    Session session = repository.login(new SimpleCredentials("test1", "".toCharArray()));

    Workspace ws = session.getWorkspace();

    Node parentNode = session.getRootNode();

    //Create a first version
    Node n = parentNode.addNode("childNode", "nt:unstructured");
    n.addMixin("mix:versionable");
    n.setProperty("anyProperty", "Blah");
    session.save();
    Version firstVersion = ws.getVersionManager().checkin("/childNode");

    // add new version
    ws.getVersionManager().checkout("/childNode");
    n.setProperty("anyProperty", "Blah2");
    session.save();
    ws.getVersionManager().checkin("/childNode");


    // restoring old version
    ws.getVersionManager().restore("/childNode", firstVersion, true);

之后我得到了

javax.jcr.version.VersionException: VersionManager.restore(String, Version, boolean) not allowed on existing nodes; use VersionManager.restore(Version, boolean) instead: /childNode

最佳答案

问题出在恢复方法调用上。如果您查看 API 文档,您会发现路径(第一个参数)不应指向现有节点。如果是这样,您将得到此异常。尝试使用/childNode2,它应该将其恢复到该位置。

从外观来看:

ws.getVersionManager().restore(firstVersion, true);

应该可以正常工作并将以前的版本恢复到当前位置。

关于jackrabbit - JCR Jackrabbit 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940645/

相关文章:

java - 嵌套数组节点类型在 Jackrabbit JCR 中有效吗?

java - 将 Hippo JCR 日期时间转换为 Java 格式

metadata - 从 Magnolia jcr 中的 xpath-query 过滤 "MetaData"-节点

apache - 如何在集群中配置两台 jack 兔服务器?

java - 调整 Jackrabbit 数据模型(VERSION_BUNDLE 表)

java - Apache Jackrabbit - 我的文件在哪里?

java - JCR基本概念

open-source - 构建 Apache Sling、Felix、Jackrabbit 项目的目的是什么

jackrabbit - 将数据从一个 jackrabbit 存储库(Magnolia 存储库)传输/迁移到另一个 jackrabbit 存储库

java - 内容存储库中的节点和属性是什么?