您好,我正在尝试恢复节点的版本。但出了点问题:
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/