我已经创建了节点,并创建了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现在我想获取一个版本1.2的name。
我试过了
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??
}是否可以触发查询并获取数据?
我如何才能做到这一点?
请回答这个问题。
提前谢谢。
发布于 2012-12-25 19:52:46
我已经很长时间没有用过杰克兔了,所以我可能是错的。
但据我所知,以前版本节点的内容存储为version节点下的冻结节点。
因此,我认为您可以尝试使用以下命令来检索它:
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());
}希望这能有所帮助。
发布于 2013-03-19 23:52:17
卢卡是对的。每个版本都有一个冻结的节点,表示检入时的节点。您可以像调用基节点一样在它上调用方法。
Version version = ...
Node node = version.getFrozenNode();
String name = node.getName();
// get a property, eg. someStringProperty
String someStringProperty = node.getProperty("someStringProperty").getString();https://stackoverflow.com/questions/13968014
复制相似问题