2

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

    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
4

1 回答 1

2

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

从它的样子来看:

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

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

于 2012-03-30T20:50:51.797 回答