jcr - 具有自定义属性的 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
}
}
提前致谢
解决方案
推荐阅读
- c - 我有一个不能在 Ubuntu 上运行的程序,但它在 Windows 上运行
- python - Seaborn Facet Grid:向每个 plt.plot facet 添加水平平均线
- android - 未找到 Android 发布的库 xml 属性 (AAPT)
- html - 如何使用 Bootstrap 4.3.1 版移动导航栏中的项目
- aws-sdk - AWS CloudFront 开发工具包 - 测试是否可以提供文件
- mysql - 查找所有因升级而遇到“bios error”的主机。可以使用任何数据库,如 MySQL/Oracle
- xml - 有没有办法从 OWL (RDF/XML) 文件中快速访问所有注释和子注释?
- python - 求函数的最小值?
- rest - 如何从 Spring Data REST 中的集合关联中删除元素?
- javascript - 使用 jest.mock 时如何修改单个方法