Поэтому я сохраняю объект «Пользователь» в хранилище данных, который отображается в средстве просмотра хранилища данных, и я могу видеть все свойства, которые я ожидаю, который включает в себя свойство с именем contacts
, которое содержит список типов long
(представляющие идентификаторы людей в списке контактов этого пользователя). Это сохраняется с использованием userEntity.setProperty("contacts", ids);
, где ids
является List<Long>
.Свойства объекта хранилища данных не возвращаются
Однако, когда я использую Java в App Engine для извлечения этой сущности (без каких-либо проекций, просто фильтр на адрес электронной почты пользователя, которого я ищу) Я получаю объект объекта, у которого нет контактов имущество.
Есть ли причина, по которой я не получал бы полный набор свойств? Код я использую (надеюсь) относительно стандарт:
Query.Filter emailFilter = new Query.FilterPredicate("email", Query.FilterOperator.EQUAL, email);
Query q = new Query("User").setFilter(emailFilter);
Entity userEntity = datastoreService.prepare(q).asSingleEntity();
logger.info(userEntity.toString());
Это выходы:
<Entity [User(5156288090603520)]:
lastName = Doe
updatedTs = 1414005061759
email = [email protected]
firstName = John
ownerEmail = [email protected]
>
Что все, что я вижу в окне просмотра, кроме contacts
имущества, содержащего список. Как таковой, если я попробую userEntity.getProperty("contacts");
, тогда я получаю нулевой объект. Если я выполнить запрос GQL в App Engine консоли:
SELECT contacts FROM User
Я также получить ожидаемый результат. Любая идея, почему мой запрос Java не возвращает это свойство?
Вы недавно обновили объект и добавили поле контактов? Возможно, что вы получаете возможную согласованность - возможно, что ваши индексы обновлены, но они все еще возвращают старый объект. –
Я действительно задавался вопросом, может ли это быть так, но другие свойства, которые были изменены в одной транзакции, как представляется, обновились. Возможно ли, что они обновляются независимо? – aiszatt
Спасибо @ patrick-costello, ты был прав. Я думал, что конечная последовательность означает несколько секунд/минут, а не часов! – aiszatt