2012-12-20 15 views
8

Düğümü oluşturdum ve 3 sürüm oluşturdum. Jackrabbit'teki bir düğümün eski bir sürümünün özelliğini nasıl edinebilirim?

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 

Şimdi ben bir sürümü 1.2 ait name almak istiyorum

..

Ben

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?? 
} 

aracılığıyla çalıştı Can, sorgu yangın ve veri getirmek mümkün mü?

Bunu nasıl başarabilirim?

Lütfen bunu cevaplayın.

Şimdiden teşekkürler.

cevap

4

Jackrabbit'le çalışmadığımdan uzun bir zaman, bu yüzden yanılmış olabilirim.

Ama

olarak hatırladığım kadarıyla, bir önceki sürümü düğümün içeriği sürümü düğümü altında dondurulmuş düğüm olarak depolanır.

Yani, sen onu almak için deneyebilirsiniz düşünüyorum:

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()); 

} 

Umut bu yardımcı olur.

+0

Tamam, bildirin. –

+0

Düzenlememe bakın. Çalışıyor mu? Değilse, hangi hatayı alırsınız? –

+0

Kodunuzu denemiyorum çünkü snippet'te sahip olmadığım kendi özel sınıfınızı kullanıyorsunuz. Sadece bana hatayı söyle, böylece sana daha fazla yardımcı olabilirim. –

1

Luca haklıydı. Her Sürüm, kontrol edildikten sonra düğümünüzü temsil eden dondurulmuş bir düğüme sahiptir. Temel düğümde yapacağınız gibi yöntemleri de kullanabilirsiniz.

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

// get a property, eg. someStringProperty 
String someStringProperty = node.getProperty("someStringProperty").getString(); 
İlgili konular