Я использую Jackrabbit, и я пытаюсь запросить существующий узел с UUID. Мой код показан ниже. Проблема в том, что UUID для referenceNode имеет форму «90be246a-a17c-445e-a5ad-81b064de0bee», и, похоже, что механизм XPATH, используемый в Jackrabbit (Lucene), имеет проблемы с дефисами.Jackrabbit Запуск запросов против UUID
Если я запустил query2, все будет нормально, а referenceNode будет напечатан. Если я запускаю query1 (с UUID) внутри Eclipse, ничего не возвращается. ОДНАКО, если я запустил query1 внутри Jackrabbit Viewer, запрос выполняется нормально.
Кажется, что мне нужно избежать дефиса в моей строке запроса, но я попробовал добавить двойные обратные косые черты, и я получаю тот же результат. Каков правильный способ запуска запросов против 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