2010-03-09 78 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