2010-02-11 3 views
3

На моем User классе у меня есть поле, которое представляет собой список строк:СДО - Список строк не извлекаются из базы данных

@Persistent 
private List<String> openIds; 

При создании нового пользователя я это сделать:

User user = new User(); 
user.openIds.add(openid); 
pm.makePersistent(user); 

Когда я ломаю после этой последней строки и смотрю, openIds содержит openid, который я положил туда. Но, когда я позже позвоню User user = pm.getObjectById(User.class, id); с правильным идентификатором, поле openIds - это пустой список.

Кто-нибудь знает, что может вызвать это?

EDIT: КСТАТИ Я бегу на Google App Engine

UPDATE: Глядя на зрителя датастора, я могу видеть OpenID правильно храниться в базе данных. Так что его просто не получается правильно ...

UPDATE 2: Теперь он работает отлично. Я почти уверен, что ничего не изменил. Я думаю, что, должно быть, произошло то, что из базы данных была выведена старая версия объекта пользователя. Пользовательский объект, который был вставлен до того, как я получил код, который сохраняет openid. Как только я вытерл базу данных, все работало нормально.

ответ

0

Не помещать это поле в план извлечения? Доступ к постоянным полям напрямую, вместо того, чтобы проходить через сеттеры?

+0

Нужно ли добавлять его в план по умолчанию, даже если его список строк? – Kyle

+0

Вы имеете в виду «только список строк», который по умолчанию не используется в DFG? – DataNucleus

+0

Заинтересованы в том, как это получается, поскольку у меня такая же проблема. Я не могу изменить список в хранилище данных, поскольку он является нулевым. Я попытался настроить fetchSize на 3, но не использовать. Было бы хорошо, если бы у кого-то было время сделать исчерпывающий пример. – Spedge

Смежные вопросы