1

我正在尝试添加参考,但是当我调用 node.getReferences() 时,我看不到它。

我尝试创建一个简单的示例 -> 在根目录下创建 2 个节点并从另一个节点引用一个。这很好用。

在我的工作代码中它没有。我猜这与版本控制有关,但我找不到任何文档来解释发生了什么。让我解释一下结构

Root
  |__project node
       |
       |__ node 1
       |
       |__ node 2

所有节点都有 mix:versionable 和 mix:referenceble。

一点代码...

         node1.checkout();
         node2.checkout();
         node2.setProperty("ref to node1", node1);
         session.save();

         if (!node1.getReferences().hasNext())
             System.out.println("No references");

我试过删除结帐和保存,但都无济于事。

任何意见或推荐阅读表示赞赏。

特德。

4

1 回答 1

3

您列出的代码应该可以按预期工作。您是否使用了一些在处理引用的方式上可能存在错误的远程处理层(RMI、WebDAV 等)?

例如,您可以使用本地 Jackrabbit 实例尝试以下代码:

Node root = session.getRootNode().addNode("test");
Node node1 = root.addNode("node1");
node1.addMixin("mix:referenceable");
Node node2 = root.addNode("node2");
node2.setProperty("reference", node1);
session.save();

System.out.println("References to " + node1.getPath() + ":");
for (Property reference : JcrUtils.getReferences(node1)) {
    System.out.println("- " + reference.getPath());
}

它打印出以下内容:

References to /test/node1:
- /test/node2/reference
于 2011-09-22T09:48:52.500 回答