Запросы для @Embedded карты в objectify для GAE - PullRequest
4 голосов
/ 21 сентября 2011

Пожалуйста, рассмотрите следующий пример

@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' в виде списка вместо карты, могу ли я запросить объект Abc так, чтобы одно из значений списка имело objName как 'someName'?Нужна помощь в этом.Спасибо

1 Ответ

2 голосов
/ 27 октября 2011

Вы должны быть в состоянии сделать запрос следующим образом:

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

Ключи карты просто складываются в карту свойств объекта, используя точку в качестве разделителя и имя поля карты ("objs") в качестве префикса, чтобы избежать коллизий.

...