AEM查询生成器:搜索多个属性

AEM查询生成器:搜索多个属性,aem,query-builder,aem-6,Aem,Query Builder,Aem 6,如何列出给定节点下多个属性的所有属性和相应值 例如,在下面的代码中,我只能搜索一个属性。但我需要搜索10个不同的属性(alttext、img、promos等等),并获得相应的值(如果存在) Map Map=newhashmap(); put(TYPE_谓词,“nt:base”); put(路径\谓词,printAttachmentJsonNodePath); map.put(“财产”、“文件参考”); 地图放置(“p.摘录”,“真实”); map.put(SEARCH\u LIMIT\u PRE

如何列出给定节点下多个属性的所有属性和相应值

例如,在下面的代码中,我只能搜索一个属性。但我需要搜索10个不同的属性(alttext、img、promos等等),并获得相应的值(如果存在)

Map Map=newhashmap();
put(TYPE_谓词,“nt:base”);
put(路径\谓词,printAttachmentJsonNodePath);
map.put(“财产”、“文件参考”);
地图放置(“p.摘录”,“真实”);
map.put(SEARCH\u LIMIT\u PREDICATE,“-1”);
Query Query=queryBuilder.createQuery(PredicateGroup.create(map)),
resourcesolver.adapto(Session.class));
SearchResult=query.getResult();
for(Hit-Hit:result.getHits()){
字符串路径=hit.getPath();
resourceHit=resourceResolver.getResource(路径);
Node Node=resourceHit.adapto(Node.class);
String fileReference=node.getProperty(“fileReference”).getString();
System.out.println(文件引用);
}

您可以对多个属性使用数字前缀:

map.put("1_property", "jcr:content/cq:template");
map.put("1_property.value", "/apps/geometrixx/templates/homepage");
map.put("2_property", "jcr:content/jcr:title");
map.put("2_property.value", "English");

以下是

您可以对多个属性使用数字前缀:

map.put("1_property", "jcr:content/cq:template");
map.put("1_property.value", "/apps/geometrixx/templates/homepage");
map.put("2_property", "jcr:content/jcr:title");
map.put("2_property.value", "English");

以下是

如果您有很多属性,或者在运行时生成了大量可以使用的属性

您的代码:

Map<String, String> map = new HashMap<String, String>();
map.put(TYPE_PREDICATE, "nt:base");
map.put(PATH_PREDICATE, printAttachmentJsonNodePath);
map.put("property", "fileReference");
map.put("p.excerpt", "true");
map.put(SEARCH_LIMIT_PREDICATE, "-1");

Query query = queryBuilder.createQuery(PredicateGroup.create(map),
        resourceResolver.adaptTo(Session.class));
SearchResult result = query.getResult();
在这种情况下,将在以下属性之间创建条件:
@property1=value1和@property2=value2

如果需要或,请创建单独的组并将其添加到根组:

PredicateGroup properties = new PredicateGroup();
properties.add(new Predicate("property").set(property, "property1").set("value", value1));
.....
properties.add(new Predicate("property").set(property, "propertyN").set("value", valueN));
properties.setAllRequired(false);

rootGroup.add(properties);

如果您有很多属性,或者在运行时生成了大量属性,那么您可以使用

您的代码:

Map<String, String> map = new HashMap<String, String>();
map.put(TYPE_PREDICATE, "nt:base");
map.put(PATH_PREDICATE, printAttachmentJsonNodePath);
map.put("property", "fileReference");
map.put("p.excerpt", "true");
map.put(SEARCH_LIMIT_PREDICATE, "-1");

Query query = queryBuilder.createQuery(PredicateGroup.create(map),
        resourceResolver.adaptTo(Session.class));
SearchResult result = query.getResult();
在这种情况下,将在以下属性之间创建条件:
@property1=value1和@property2=value2

如果需要或,请创建单独的组并将其添加到根组:

PredicateGroup properties = new PredicateGroup();
properties.add(new Predicate("property").set(property, "property1").set("value", value1));
.....
properties.add(new Predicate("property").set(property, "propertyN").set("value", valueN));
properties.setAllRequired(false);

rootGroup.add(properties);