1

我想访问已被删除的节点的 javax.jcr.version.VersionHistory 以读取元数据和更改标签,或者可能恢复它。我怎样才能做到这一点?JCR VersionManager提供了一些方法getBaseVersion(java.lang.String absPath),当 absPath 的节点被删除时getVersionHistory(java.lang.String absPath)抛出一个PathNotFoundException,尽管数据仍然在 /jcr:system/jcr:versionStorage 中。

我正在使用jackrabbit-oak 1.6.1,以防万一。非常感谢你!

4

2 回答 2

2

版本化节点删除后,修订数据还在/jcr:system/jcr:versionStorage,如果你有足够的节点信息,你可以搜索它的版本,nt:frozenNode节点 -

--jcr sql2
SELECT * FROM [nt:frozenNode] as n WHERE ISDESCENDANTNODE ([/jcr:system/jcr:versionStorage]) and n.[jcr:title] LIKE "name%"

版本节点可以转换为javax.jcr.version.Version

Version version = (Version) frozenNode.getParent();

并使用VersionManager.restore()-

VersionManager versionManager = session.getWorkspace().getVersionManager();
versionManager.restore(path, version, true);
于 2019-05-01T08:39:46.920 回答
0

AFAIU,如果版本控制节点被删除,则无法再根据原始路径访问其版本历史记录。

这意味着您必须在删除节点之前跟踪该信息。

于 2019-04-23T09:56:32.183 回答