无法获取 jcr:rootVersion 节点的内容

问题描述

我创建了一个节点并使用 VersionManager 签出和签入功能创建了它的 2 个版本。 我在 jcr:content 属性添加/设置 xyz 文件内容

version::jcr:rootVersion
hasNode:jcr_content :false
version::1.0
hasNode:jcr_content :true
version::1.1
hasNode:jcr_content :true

但是当我尝试使用以下代码获取所有版本数据时,我无法获取 jcr:rootVersion 节点的 jcr:content 属性。我能够使用 1.0 和 1.1 版的 jcr:content 属性获取文件内容

if (node.isNodeType(NodeType.MIX_VERSIONABLE)) {
    final VersionHistory versionHistory = session.getWorkspace().getVersionManager().getVersionHistory(node.getPath());
    final VersionIterator itr = versionHistory.getAllVersions();
    while (itr.hasNext()) {
        final Version v = itr.nextVersion();
        final Node frozenNode = v.getFrozenNode();
        log.info("version::" + v.getName());
        log.info("hasNode:jcr_content :" + frozenNode.hasNode(Property.JCR_CONTENT));
    }
}

如何从 rootversion 节点获取文件内容,为什么 jcr:content 属性在 jcr 版本历史记录中不适用于 root 版本。

解决方法

https://docs.adobe.com/content/docs/en/spec/jcr/2.0/3_Repository_Model.html#3.13.5.2%20Root%20Version

3.13.5.2 根版本

每个版本历史都有一个根版本,这是一个空版本 不存储状态;它只是作为所有的最终前身 后续版本。

root版本通过VersionHistory.getRootVersion访问 (参见 15.1.1.1 根版本)。在完整版本控制下,它也是 表示为 nt:versionHistory 节点的 nt:version 子节点, 称为 jcr:rootVersion。