ルートには、タイプsling:folderのpendingという名前の 1 つのフォルダーが含まれます。
nt:unstructured型のノードの数があり、長い値の名前があり、その長い値は私のコード処理にとって非常に重要です。
ここで、この保留中のフォルダーから上位 20 個のノード (20 個の最小ノード名、つまり long 値) のデータを取得したいと考えています。
この状況での JCR クエリの書き方を教えてください。
編集 No.1
Repository repository = JcrUtils.getRepository("http://localhost:4502/crx/server");
Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));
// Obtain the query manager for the session via the workspace ...
QueryManager queryManager = session.getWorkspace().getQueryManager();
// Create a query object ...
String expression = "SELECT * FROM [nt:base] AS s WHERE ISDESCENDANTNODE([/pending])";
Query query = queryManager.createQuery(expression, javax.jcr.query.Query.JCR_SQL2);
// Execute the query and get the results ...
QueryResult result = query.execute();
// Iterate over the nodes in the results ...
NodeIterator nodeIter = result.getNodes();
しかし、ルートノードに存在する順序とは異なる順序を与えます。しかし、それはソート形式ではありません。
編集 No.2
これで、この関数の機能が得られました。そして、今はうまくいっています。私が得たのは、この関数の2番目のパラメーターで言及されている宛先ノードのすぐ上のノードを注文することです。
しかし、来るノードは異なる名前 (数字) です。では、を使用してこれをどのように並べ替えることができますかorderBefore
。毎回、このノードを配置する必要がある正しい場所 (宛先の相対パス) を知ることができないためです。