Google app engine 对象化检查集合是否包含值
我已经设置了一些定义为Google app engine 对象化检查集合是否包含值,google-app-engine,enums,google-cloud-datastore,objectify,Google App Engine,Enums,Google Cloud Datastore,Objectify,我已经设置了一些定义为Enum的值。现在我想编写一个查询,返回集合中具有特定Enum值的实体数。我像下面这样尝试过,但不起作用(返回实体的空列表) infoTypes声明为Set 使用中的检查值是否在集合中很简单,但如何用另一种方法检查它-集合是否包含值(或一组值)?只能通过索引文件查询数据存储。只需通过传递字段名和值(按您的方式)即可支持对多值属性的相等查询,但字段必须编制索引。Objectify对枚举有非常直观的支持,所以这不应该是问题所在。Objectify中的索引是使用字段上的@Inde
Enum
的值。现在我想编写一个查询,返回集合中具有特定Enum
值的实体数。我像下面这样尝试过,但不起作用(返回实体的空列表)
infoTypes
声明为Set
使用中的
检查值是否在集合中很简单,但如何用另一种方法检查它-集合是否包含值(或一组值)?只能通过索引文件查询数据存储。只需通过传递字段名和值(按您的方式)即可支持对多值属性的相等查询,但字段必须编制索引。Objectify对枚举有非常直观的支持,所以这不应该是问题所在。Objectify中的索引是使用字段上的@Index完成的。检查字段上是否有@Index。@Ashish工作正常。我还没有在infoTypes
集合上添加@Index
注释。你能把这个作为答案贴出来吗?这样我就可以投票接受了。谢谢汤姆。贴出答案的细节,以便任何人都可以看到它的完整图片。我可以检查集合是否包含密钥吗?不适合我,可能是个关键问题。我有一个包含密钥集合的实体。我想查询集合中有特定键的实体。@vandus使用筛选器查询@Index List myEntities
myEntities={{MyEntity instance}
对我很有效。不确定是否改为使用密钥。
public InfoCount getInfoCount(@Named("info") InfoType type) {
ofy().load()
.type(InfoRecord.class)
.filter("infoTypes", type)
.count()
}