2011-09-19 217 views
1

我想添加一個引用,但是當我調用node.getReferences()我看不到它。Jackrabbit - node.getReferences()不返回任何東西

我試過創建一個簡單的例子 - >在根目錄下創建2個節點,並從另一個參照。這工作正常。

在我的工作代碼中沒有。我猜這與版本控制有關,但我可以'找到任何文檔解釋發生了什麼。讓我解釋結構

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

所有節點都有混合:可版本化和混合:可引用。

位的代碼...

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

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

我試圖消除結賬的和保存,但都無濟於事。

任何意見或建議閱讀讚賞。

泰德。

回答

3

您列出的代碼應該按照您的預期工作。您是否正在使用某些遠程處理層(RMI,WebDAV等),這些處理引用的方式可能存在錯誤?

你可以嘗試,例如與本地兔崽子例如下面的代碼:

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 
+0

我是在與當地兔崽子實例其實測試。我想知道如果我忘了添加「mix:可參考」(作爲JCR newbe!)!! 我已經放棄了參考,並使用了一個單獨的節點,其屬性已經最終成爲更合適的解決方案。 – TedTrippin