Jackrabbit을 사용하고 있으며 UUID가있는 기존 노드를 쿼리하려고합니다. 내 코드는 아래와 같습니다. 문제는 referenceNode의 UUID가 " '90be246a-a17c-445e-a5ad-81b064de0bee'"형식이며 Jackrabbit (Lucene)에서 사용 된 XPATH 엔진이 하이픈을 처리하는 데 문제가있는 것 같습니다.UUID에 대한 Jackrabbit 실행 쿼리
query2를 실행하면 모든 것이 잘되고 referenceNode가 인쇄됩니다. Eclipse 내에서 query1 (UUID 포함)을 실행하면 아무 것도 반환되지 않습니다. 그러나 Jackrabbit 뷰어에서 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