在GAE的客观化中查询@Embedded地图

时间:2011-09-21 13:04:55

标签: java google-app-engine objectify

请考虑以下示例

@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")成立。

如何在Objectify中进行此查询?另外,如果我将'objs'存储为列表而不是map,我可以查询Abc的一个对象,使得其中一个列表值的objName为'someName'吗?需要帮助。感谢

1 个答案:

答案 0 :(得分:2)

您应该能够像这样查询:

Objectify ofy = factory.begin
ofy.query(Abc.class).filter("objs.someKey.objName=", "someName")

将地图键简单地折叠到实体属性的地图中,使用点作为分隔符,并使用地图字段的名称(“objs”)作为前缀以避免碰撞。