请考虑以下样本
@Entity
public class Abc {
@Id
private Long id;
@Unindexed
private String name;
@Embedded
private Map<String, Xyz> objs;
}
public class Xyz {
private String objName;
private String objStatus;
}
现在我想要Abc的对象,以便
objs.get("someKey").getObjName().equals("someName")
为true。如何在Objectify中进行此查询?另外,如果我将“objs”存储为列表而不是映射,是否可以查询Abc对象,以使列表值之一具有objName作为“someName”?在这方面需要帮助。谢谢
最佳答案
您应该可以这样查询:
Objectify ofy = factory.begin
ofy.query(Abc.class).filter("objs.someKey.objName=", "someName")
映射键简单地折叠到实体的属性映射中,使用点作为分隔符,并使用映射字段的名称(“objs”)作为前缀以避免冲突。