在GAE中,当使用Objectify时,可以查询HashMap吗?如果是这样,你会怎么写?

ofy().load().type(MyClass.class).filter("hashMapfieldName", "keyQueryinggFor").list();

hashMapfieldNameHashMap<String, String>的地方似乎不起作用。我正在寻找hashMapfieldName包含特定键的实体。

最佳答案

就像嵌入式类一样,Objectify将Map<String, String>转换为不可索引的低级EmbeddedEntity对象。但是,如果您对Map字段(或嵌入式类字段)使用@Index,则Objectify将创建一个综合索引,无论如何您都可以进行查询。

按照您的示例,假设您有一个名为hashMapfieldName的Map字段,其中包含字符串"key""value"的映射。此查询语法将返回具有该对的实体:

ofy().load().type(MyClass.class).filter("hashMapfieldName.key", "value");

如果您只是寻找密钥存在,请尝试filter("hashMapfieldName.key !=", null)

07-24 14:20