Спасибо. Я добавил простой session.save () после установки и перед запросом, и это сработало.

ользую Jackrabbit, и я пытаюсь запросить существующий узел, который имеет UUID. Мой код показан ниже. Проблема заключается в том, что UUID для referenceNode имеет вид «90be246a-a17c-445e-a5ad-81b064de0bee», и кажется, что движок XPATH, используемый в Jackrabbit (Lucene), имеет проблемы с дефисами.

Если я запускаю query2, все в порядке, и referenceNode печатается. Если я запускаю query1 (с UUID) внутри Eclipse, ничего не возвращается. ОДНАКО, если я запускаю query1 внутри Jackrabbit Viewer, запрос выполняется нормально.

Кажется, что мне нужно экранировать дефисы в моем 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());
  }

Ответы на вопрос(1)

Ваш ответ на вопрос