Google app engine 使用Java在gae数据存储中存储和查询字符串列表

Google app engine 使用Java在gae数据存储中存储和查询字符串列表,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我尝试在gae数据存储中存储实体中的字符串数组。诸如此类: public class MyClass { private String id; private String name; (...) private List<String> tags; (...) } Entity entity = new Entity("MyClass", "myId"); entity.setProperty("name", "My Name"); List<Strin

我尝试在gae数据存储中存储实体中的字符串数组。诸如此类:

public class MyClass {
  private String id;
  private String name;
  (...)
  private List<String> tags;
  (...)
}

Entity entity = new Entity("MyClass", "myId");
entity.setProperty("name", "My Name");
List<String> tags = new ArrayList<String>();
tags.add("gae");
tags.add("datastore");
entity.setProperty("tags", tags);
公共类MyClass{
私有字符串id;
私有字符串名称;
(...)
私有列表标签;
(...)
}
实体=新实体(“MyClass”、“myId”);
实体.setProperty(“名称”、“我的名称”);
列表标记=新的ArrayList();
标签。添加(“gae”);
添加标签(“数据存储”);
实体.setProperty(“标签”,标签);
这种方法正确吗?如何在查询中使用tags属性(例如,在tags列表中具有值gae的所有元素)

Query Query=新查询(“MyClass”);
addFilter(字段名,FilterOperator.EQUAL,“gae”);
Iterable结果=datastore.prepare(q).asIterable();
for(实体:结果){
(...)
}
谢谢你的帮助! Thierry

是的,如果您的标签列表没有变大,那么这是正确的(超过10k,请查看字段大小)

您现在可以按如下方式查询MyClass:

Query q = new Query("myClass")
                .addFilter("tags",
                           Query.FilterOperator.EQUAL,
                           "gae");
Query q = new Query("myClass")
                .addFilter("tags",
                           Query.FilterOperator.EQUAL,
                           "gae");