GAE w/Objectify - 你能查询HashMap吗?

Mar*_* M. 3 java google-app-engine objectify google-cloud-datastore

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

ofy().load().type(MyClass.class).filter("hashMapfieldName", "keyQueryinggFor").list();
Run Code Online (Sandbox Code Playgroud)

似乎不工作,而且hashMapfieldName是一个HashMap<String, String>.我期待找到hashMapfieldName包含某个键的实体.

sti*_*ure 7

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

下面您的例子,假设你有一个名为映射字段hashMapfieldName包含字符串映射"key""value".此查询语法将返回具有该对的实体:

ofy().load().type(MyClass.class).filter("hashMapfieldName.key", "value");
Run Code Online (Sandbox Code Playgroud)

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

  • 听起来你正在测试密钥的存在.也就是说,有一个值,值不为null(假设您不认为null是有效值).我的答案的最后一句话应该让你直截了当. (2认同)