JDO - список строк, не извлекаемых из базы данных - PullRequest
3 голосов
/ 11 февраля 2010

В моем классе User у меня есть поле, представляющее собой список строк:

@Persistent
private List<String> openIds;

Когда я создаю нового пользователя, я делаю это:

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

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

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

РЕДАКТИРОВАТЬ: Кстати, я работаю на Google App Engine

ОБНОВЛЕНИЕ: Глядя на средство просмотра хранилища данных, я вижу, что openid был правильно сохранен в базе данных. Так что это просто не получается правильно ...

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

1 Ответ

0 голосов
/ 11 февраля 2010

Не помещаете это поле в план выборки? Прямой доступ к постоянным полям, а не через сеттеры?

...