Problem
Wenn Sie die folgende Abfrage ausführen, wird RepositoryException von getNodes() ausgegeben.
Beispielcode:
Session session = resourceResolver.adaptTo(Session.class); QueryManager queryManager = session.getWorkspace().getQueryManager(); String queryString = "SELECT child.*, page.[cq:lastReplicated] FROM [cq:PageContent] AS page " + "INNER JOIN [nt:unstructured] AS child ON ISCHILDNODE(child,page) " + "WHERE ISDESCENDANTNODE(page,'/content/geometrixx/en/') "; Query query = queryManager.createQuery(queryString, Query.JCR_SQL2); QueryResult result = query.execute(); NodeIterator nodes = result.getNodes();
Ausnahme:
javax.jcr.RepositoryException: Query contains more than one selector: [child, page] at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getNodes(QueryResultImpl.java:161)
API-Referenz:
https://docs.adobe.com/content/docs/en/spec/javax.jcr/javadocs/jcr-2.0/javax/jcr/query/QueryResult.html#getNodes()
- RepositoryException - Wenn die Abfrage mehr als einen Selektor enthält
Umgebung
AEM
Ursache
Da die Abfrage mehr als einen Selektor enthält, müssen Sie den Selektor (z. B. untergeordnete Elemente oder Seiten) angeben.
Lösung
Verwenden Sie die Methode getRows anstelle von getNodes.
Query query = queryManager.createQuery(queryString, Query.JCR_SQL2); QueryResult result = query.execute(); RowIterator rows = result.getRows(); while (rows.hasNext()) { Row row = rows.nextRow(); Node node = row.getNode("page"); }
Weitere Informationen
Repository-Ausnahme beim Ausführen der Abfrage (innerer Zusammenschluss) in CQ 5.6
http://help-forums.adobe.com/content/adobeforums/de/experience-manager-forum/adobe-experience-manager.topic.html/forum__4rih-hi_i_am_running.html
Bei Ihrem Konto anmelden