2010-03-09 3 views
2

Jackrabbit을 사용하고 있는데 다음 질문이 있습니다.
부모 노드 P와 자식 노드 C가 있습니다. P와 C 모두 버전을 사용할 수 있습니다. 필자는 코드의 일부 지점에서 P의 이전 버전 V에서 데이터를 가져와야하므로 필요 한 버전을 얻으려면 getVersionHistory().getVersion(V).getNode("jcr:frozennode") 을 사용합니다. 그러나이 버전에서 노드 P의 자식은 노드 C가 아니라 C의 버전 기록에 대한 참조이므로 P의 버전이 V 인 정확한 상태 C를 알지 못합니다. 따라서 질문은 어떤 버전의 C가 PI 버전에 해당하는지 판별하려면 ("대응"은 동시에 활성화 되었음). 나는 P와 C가 모두 버전 화가 가능하므로 독립적으로 체크 아웃/체크 -인할 수 있다는 것을 이해한다. C의 버전이 P의 버전과 일치하지 않을 수도 있기 때문에 C의 서브 세트를 얻을 것으로 기대한다. P는 버전 V.
에있는 동안 C 겪은 버전을 포함 버전 기록 당신은 주어진 시간에 assosciated있는 버전을 결정하기 위해 모든 노드에 추가 된 타임 스탬프를 사용할 수 있습니다, 감사
크리스티나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

+0

그래서 위의 시나리오에서 노드 C를 독립적으로 체크 아웃해서는 안되지만 다른 자식을 수정하고 싶지는 않더라도 노드 P를 항상 체크 아웃해야합니다. 이것은 효과적으로 트리를 단일 노드 방식으로 수정하는 경우에도 항상 각 버전 관리가 가능한 트리의 루트를 체크 아웃 할 것임을 의미합니다. 매우 효율적으로 들리지는 않습니다. P를 이전 버전 V로 되 돌렸을 때 C는 V와 관련된 버전으로 되돌려 졌으므로 찾고있는 기능이 여기에 있습니다. 문제는 jackrabbit 사용자 또는 jackrabbit 자체에서 사용할 수 있는지 여부입니다. – Christina