问题描述
我创建了一个节点并使用 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 版本。
解决方法
3.13.5.2 根版本
每个版本历史都有一个根版本,这是一个空版本 不存储状态;它只是作为所有的最终前身 后续版本。
root版本通过VersionHistory.getRootVersion访问 (参见 15.1.1.1 根版本)。在完整版本控制下,它也是 表示为 nt:versionHistory 节点的 nt:version 子节点, 称为 jcr:rootVersion。