2
我正在使用Jackrabbit,並試圖查詢具有UUID的現有節點。 我的代碼如下所示。問題是referenceNode的UUID的形式是''90be246a-a17c-445e-a5ad-81b064de0bee'「,看起來Jackrabbit(Lucene)中使用的XPATH引擎在處理連字符時存在問題。Jackrabbit針對UUID運行查詢
如果我運行query2,一切都很好,並且referenceNode被打印。 如果我在Eclipse中運行query1(使用UUID),則不返回任何內容。然而,如果我在Jackrabbit Viewer中運行query1,查詢運行良好。
看起來我必須在我的queryString中跳過連字符,但我嘗試添加雙反斜槓並獲得相同的結果。針對UUID運行查詢的正確方法是什麼?
// Set up Nodes
rootNode = session.getRootNode();
Node referenceNode = rootNode.addNode("referenceNode");
Node referencingNode = rootNode.addNode("referencingNode");
referenceNode.addMixin("mix:referenceable");
referencingNode.setProperty("pointer", new ReferenceValue(referenceNode));
// Query
String uuid = referenceNode.getUUID();
QueryManager qm = ws.getQueryManager();
String queryString1 = "//*[@jcr:uuid='"+uuid+"']";
String queryString2 = "//referenceNode";
Query q = qm.createQuery(queryString1, Query.XPATH);
QueryResult result = q.execute();
NodeIterator it = result.getNodes();
while(it.hasNext()) {
Node node = it.nextNode();
System.out.println(node.getName());
}
謝謝。我在設置之後和查詢之前添加了一個簡單的session.save(),並且它工作正常。 – Steve 2011-01-13 19:19:35