У меня есть простой класс @Entity со стандартным идентификатором @Id Long и несколькими полями. Одним из таких полей является Карта.Список запросов объектов со встроенным объектом с использованием objectify
@Entity
public class MyEntity{
@Id Long id;
@Index String fieldOne;
@Unindex int fieldTwo;
@Unindex int fieldThree;
@Unindex Map<String, MyPojo> map = new HashMap<>();
}
Из того, что я собрал, Objectify рассматривает эту карту так, как если бы она была встроенной сущностью. Когда я запрос для получения списка с помощью:
List<MyEntity> list = ofy().load().type(MyEntity.class).filter("fieldOne =", fieldList).list();
запрос выполняется нормально, но когда я пытаюсь сделать что-нибудь со списком я получаю это исключение
java.util.ArrayList не может быть приведен к ком .google.appengine.api.datastore.EmbeddedEntity
Это исключение также вызывается, когда я прикасаюсь запрос после того, как с помощью этих методов, а также:
Map<Long, MyEntity> query = ofy().load().type(MyEntity.class).ids(idsList);
или
Map<Key<MyEntity>, MyEntity> query= ofy().load().keys(iterableOfKeys);
Сейчас в некоторых тестирования я обнаружил, что если я изменю свою карту
@Unindex Map<String, Integer> map = new HashMap<>();
все отлично работает. Все вышеперечисленные запросы работают, и я могу повторять их и т. Д. И т. Д. Итак, мой вопрос - что мне не хватает? Я пытаюсь все это неправильно или есть лучший способ обойти это?
Я использую последнюю версию Objectify 5.1.12.
Благодаря
Можете ли вы опубликовать полную стек и определение MyPojo? – stickfigure
После того, как я не решил, я построил работу, чтобы двигаться дальше. После просмотра вашего комментария я вернулся и вернул это поле, чтобы использовать Map, чтобы он снова не смог собрать стек, и это не так. Сейчас все работает. Я очень смущен. До этого у меня было поле карты как индексный список, и возникли проблемы, когда я изменил его на Unindex Map. Возможно, Индексация вызвала проблему, и для изменения индекса потребовалось несколько часов. Теперь, когда карта работает, я не могу получить MyPojo из JsonMap, возвращенного на стороне клиента. Кастинг не работает.Любые мысли –
foolioJones
Я искренне не понимаю, что вы просите. Когда вы задаете вопросы, расскажите о шагах, которые вы предприняли, доводя до этой проблемы и разместив полные стеки. Если вы сохранили данные в своей базе данных, которые не находятся в «форме» ваших классов Java, вы можете иметь всевозможные проблемы. – stickfigure