问题与节点版本有关,
步骤1)如果添加了类型为mix:versionable且具有自定义属性的自定义节点作为根节点的子节点。使用 节点node = rootNode.addNode(name,type); node.addMixin(“ mix:versionable”); setFolderNodeAttributes(cutomMetadataObj,节点,类型); api。
步骤2),如果第二个版本已创建并保存在同一节点上,但具有不同的属性,例如下面
final VersionManager versionManager=session.getWorkspace().getVersionManager();
Node node = RootNode.getNode(name);
versionManager.checkout(node.getPath());
setCustomNodeAttributes(newMetadataObj, node, type);
session.save();
versionManager.checkin(node.getPath());
现在版本历史记录对象给了我两个版本 1)jcr:rootVersion 2)第一个版本命名为1.0
此版本1.0当前已更新了自定义属性,而根版本没有任何自定义属性。 因此,对于第一次提交或在步骤1中创建的节点的版本0,自定义属性会丢失(在DB中存在),但是通过VersionManager API,我无法读取第0个提交属性。
我正在使用以下代码遍历各个版本
final VersionHistory versionHistory = versionManager.getVersionHistory(node.getPath());
final VersionIterator versionItrator = versionHistory.getAllVersions();
while(versionItrator.hasNext()){
final Version version = versionItrator.nextVersion();
final Node idNode = version.getFrozenNode();
if (idNode.hasProperty("<Custom Property>")){
// For JCR:rootVersion its not present and for version 1.0 it printing latest checkedin property
}
}
预先感谢