首页 > 解决方案 > 具有自定义属性的 Jackrabbit Oak 版本控制自定义节点

问题描述

问题是关于节点的版本控制,

步骤 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版本,目前已经更新了自定义属性,root版本没有自定义属性。因此,对于第一次提交或第 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
}
}

提前致谢

标签: jcrjackrabbit

解决方案


推荐阅读