Se esegui la seguente query, viene lanciato RepositoryException da getNodes().
Codice di esempio:
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();
Eccezione:
javax.jcr.RepositoryException: Query contains more than one selector: [child, page] at org.apache.jackrabbit.oak.jcr.query.QueryResultImpl.getNodes(QueryResultImpl.java:161)
Riferimento API:
https://docs.adobe.com/content/docs/en/spec/javax.jcr/javadocs/jcr-2.0/javax/jcr/query/QueryResult.html#getNodes()
RepositoryException - se la query contiene più di un selettore
AEM
Poiché la query contiene più di un selettore, è necessario specificare il selettore (ad esempio, figlio o pagina).
Utilizza il metodo getRows invece di 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");
}
Ottenieni l'eccezione del repository all'esecuzione della query (inner join) in CQ5.6
http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__4rih-hi_i_am_running.html
Accedi al tuo account