Problème
Si vous exécutez la requête suivante, elle renvoie RepositoryException à partir de getNodes().
Exemple de code :
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();
Exception:
javax.jcr.RepositoryException: Query contains more than one selector: [child, page] at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getNodes(QueryResultImpl.java:161)
Guide de référence des API :
https://docs.adobe.com/content/docs/en/spec/javax.jcr/javadocs/jcr-2.0/javax/jcr/query/QueryResult.html#getNodes()
RepositoryException - si la requête contient plusieurs sélecteurs.
Environnement
AEM
Cause
Comme la requête contient plusieurs sélecteurs, vous devez spécifier le sélecteur (par exemple, enfant ou page).
Résolution
Utilisez la méthode getRows au lieu de 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"); }
Informations supplémentaires
Exception de référentiel lors de l’exécution de la requête (interne) en CQ 5.6
http://help-forums.adobe.com/content/adobeforums/fr/experience-manager-forum/adobe-experience-manager.topic.html/forum__4rih-hi_i_am_running.html.
Accéder à votre compte