私は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