在GAE中,当使用Objectify时,可以查询HashMap吗?如果是这样,你会怎么写?
ofy().load().type(MyClass.class).filter("hashMapfieldName", "keyQueryinggFor").list();
在
hashMapfieldName
是HashMap<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)
。