如何在jackrabbit中获取旧版本节点的属性?

时间:2012-12-20 08:30:31

标签: java jackrabbit jcr jcr-sql2

我创建了节点并创建了3个版本。

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

现在我想获得版本name的{​​{1}} ..

我试过了

1.2

是否可以触发查询并获取数据?

我如何实现这一目标?

请回答这个问题。

提前致谢。

2 个答案:

答案 0 :(得分: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());

}

希望这有帮助。

答案 1 :(得分:1)

卢卡是对的。每个版本都有一个冻结节点,代表签入时的节点。您可以像调用基节点一样调用它上的方法。

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

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