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

問題は、restore メソッドの呼び出しにあります。API ドキュメントを見ると、パス (最初の引数) が既存のノードを指すべきではないことがわかります。その場合、この例外が発生します。/childNode2 を試してみると、その場所に復元されます。

それがどのように見えるかから:

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

動作し、以前のバージョンを現在の場所に復元する必要があります。

于 2012-03-30T20:50:51.797 に答える