2012-12-20 5 views
8

노드를 만들고 3 가지 버전을 만들었습니다. jackrabbit에서 이전 버전의 노드 속성을 얻으려면 어떻게해야합니까?

String path = "/my111"; 
MyClass m1 = new MyClass(); 
m1.setPath(path); 
m1.setName("Myname"); 
m1.setLanguage("English");  
ocm.create(m1); 
ocm.save();  

for (int i = 0; i < 4; i++) { 
ocm.checkout(path); 
m1.setName("mz676666" + i); 
ocm.update(m1); 
ocm.save(); 
ocm.checkin(path);   
    } 

VersionIterator iterator = ocm.getAllVersions(path); 
while (iterator.hasNext()) { 
     Version version = (Version)iterator.next(); 
     System.out.println("version::"+version.getName());   
} 


Output : 

version::jcr:rootVersion 
version::1.0 
version::1.1 
version::1.2 
version::1.3 

지금은 버전 1.2name을 얻고 싶은

..

나는

org.apache.jackrabbit.ocm.version.VersionIterator iterator = ocm.getAllVersions(path); 
    while (iterator.hasNext()) { 
     Version version = (Version)iterator.next(); 
     System.out.println("version::"+version.getName()); 

    MyClass m1 = (MyClass) ocm.getObject(path, version.getName()); 
    System.out.println(m1.getName()); // But it always print `null`. Why?? 
} 

을 통해 그것을 시도 수는 쿼리를 해고하고 데이터를 가져올 수 있습니까?

어떻게이 작업을 수행 할 수 있습니까?

답변 해주세요. 사전에

감사합니다.

답변

4

나는 Jackrabbit과 일하지 않기 때문에 오랜 시간이 걸리므로 잘못된 것일 수 있습니다.

그러나

는 지금까지 내가 기억으로, 이전 버전 노드의 내용이 버전 노드 아래 냉동 노드로 저장됩니다.

그래서, 나는 당신이 그것을 검색하려고 수 있다고 생각 :

VersionIterator iterator = ocm.getAllVersions(path); 

while (iterator.hasNext()) { 
    Version version = (Version)iterator.next(); 

    //Here you go: 
    MarketingZone m1 = (MarketingZone) version.getFrozenNode(); 

    System.out.println(m1.getName()); 

} 

희망이 도움이됩니다.

+0

알겠습니다. –

+0

내 편집을 참조하십시오. 작동합니까? 그렇지 않다면 어떤 오류가 발생합니까? –

+0

스 니펫에서 내가 갖고 있지 않은 자신 만의 사용자 정의 클래스를 사용하기 때문에 코드를 시도 할 수 없습니다. 오류를 말해 주시면 더 이상 도와 드리겠습니다. –

1

루카가 옳았습니다. 각 버전에는 체크인 한 시점에서 노드를 나타내는 고정 노드가 있습니다. 기본 노드처럼 메소드를 호출 할 수 있습니다.

Version version = ... 
Node node = version.getFrozenNode(); 
String name = node.getName(); 

// get a property, eg. someStringProperty 
String someStringProperty = node.getProperty("someStringProperty").getString(); 
관련 문제