Ich benutze Jackrabbit und ich versuche, nach einem vorhandenen Knoten mit UUID abzufragen. Mein Code ist unten gezeigt. Das Problem ist, dass UUID für referenceNode die Form "'90be246a-a17c-445e-a5ad-81b064de0bee'" hat und es scheint, dass die XPATH-Engine, die in Jackrabbit (Lucene) verwendet wird, Probleme mit Bindestrichen hat.Jackrabbit Running Queries gegen UUID
Wenn ich query2 ausführen, ist alles in Ordnung und ReferenzNode wird gedruckt. Wenn ich query1 (mit der UUID) in Eclipse ausführen, wird nichts zurückgegeben. ABER, wenn ich query1 in Jackrabbit Viewer ausführen, läuft die Abfrage gut.
Es scheint, als ob ich die Bindestriche in meinem QueryString zu entkommen, aber ich habe versucht, Doppel-Backslashes und ich bekomme das gleiche Ergebnis. Was ist der richtige Weg, um Anfragen gegen UUIDs auszuführen?
// 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());
}
Vielen Dank. Ich habe eine einfache session.save() nach dem Setup und vor der Abfrage hinzugefügt und es hat funktioniert. – Steve