2010-03-09 45 views
2

我正在使用Jackrabbit,并且我有以下问题:
我有一个父节点P和一个子节点C.P和C都是可版本化的。在我的代码中的某个时刻,我需要从P的早期版本V获取数据,因此我使用getVersionHistory().getVersion(V).getNode("jcr:frozennode") 以获取我需要的版本。然而,在这个版本中,节点P的子节点不再是节点C,而是对C的版本历史的引用,因此我不知道C的确切状态是P的版本是V.所以问题是,有没有办法以确定哪些版本的C对应于已检索的PI的版本(通过“对应的”,我的意思是同时有效)。我明白,既然P和C都是可版本化的,因此可以独立检出/检入,可能没有一个版本的C对应于一个版本的P,所以我期望得到一个C的子集其中包含C到去而P是在版本五
版本版本历史记录谢谢
克里斯蒂娜Java JCR:父节点和子节点版本之间的对应关系

回答

0

您可以使用添加到所有节点的时间戳,以确定在给定时间连结的本哪个版本。

编辑:“正确”的方式可能是按版本签出完整的子树。 检查也是这些链接:

http://www.day.com/specs/jcr/2.0/3_Repository_Model.html#VersionableState

或者本教程: http://jtoee.com/jsr-170/the_jcr_primer/5/

CND文档: http://jackrabbit.apache.org/node-type-notation.html

+1

感谢您的建议,但我实际上是寻找是否有一种方式来获得这个信息通过jcr方法“正确”,而不必做这样的解决方法。 – Christina 2010-03-10 10:46:13

+0

所以你说的是,在上面的场景中,我不应该独立签出节点C,而是总是检出节点P,即使我不想修改其他任何子节点?这实际上意味着我将总是检查每个可版本化树的根目录,即使在树中单个节点的修改也是如此。它听起来不太有效...... 当我将P还原到先前版本V时,C也被还原为与V相关的版本,所以我想我正在寻找的功能就在那里。问题是,如果它可用于jackrabbit用户或只是jackrabbit本身。 – Christina 2010-03-12 09:38:20