如何访问已删除节点的 JCR 版本?
How can I access a JCR Version of a deleted node?
我想访问已删除节点的 javax.jcr.version.VersionHistory 以读取元数据和更改标签,或者可能恢复它。我怎样才能做到这一点? JCR VersionManager 提供方法 getBaseVersion(java.lang.String absPath)
和 getVersionHistory(java.lang.String absPath)
当 absPath 处的节点已被删除时抛出 PathNotFoundException
,尽管数据仍在 /jcr:system/jcr:版本存储.
我正在使用 jackrabbit-oak 1.6.1,以防相关。非常感谢!
AFAIU,如果删除版本控制节点,将无法再根据原始路径访问其版本历史。
这意味着您必须在删除节点之前跟踪该信息。
版本节点删除后,修订数据还在/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);
我想访问已删除节点的 javax.jcr.version.VersionHistory 以读取元数据和更改标签,或者可能恢复它。我怎样才能做到这一点? JCR VersionManager 提供方法 getBaseVersion(java.lang.String absPath)
和 getVersionHistory(java.lang.String absPath)
当 absPath 处的节点已被删除时抛出 PathNotFoundException
,尽管数据仍在 /jcr:system/jcr:版本存储.
我正在使用 jackrabbit-oak 1.6.1,以防相关。非常感谢!
AFAIU,如果删除版本控制节点,将无法再根据原始路径访问其版本历史。
这意味着您必须在删除节点之前跟踪该信息。
版本节点删除后,修订数据还在/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);