ArrayList не хочет сохраняться в базе данных AppEngine HR, как это исправить? - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь сохранить и ArrayList, но он не работает.Локально все отлично [M / S db], но когда я развертываю его [HR], объекты не сохраняются.Есть идеи почему?Это действительно странно, и я не могу найти никакого решения.

Я использую JDO с DataNucleus и Guice для инъекций, здесь необходим код:

@Persistent(defaultFetchGroup = "true", serialized="true")
private ArrayList<ArrayList<Long>> colonisations = new
ArrayList<ArrayList<Long>>();

в классе пользователя

Другоекласс, который пытается сохранить данные:

@Inject
public Repository<User> userRepo;

...
...
MySession.get().getUser().getColonisations().add(colonisation);
...
...
Colonisation.this.userRepo.persist(MySession.get().getUser()); 

Единственный совет, который я получаю из журналов:

org.datanucleus.ObjectManagerImpl close: выдающееся nontx-обновление фиксируется в хранилище данных

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Используете ли вы currentTransaction при сохранении?

Хотелось бы, чтобы у меня было больше информации об этом, но у меня была похожая проблема при сохранении и извлечении из datanucleus с использованием JDO в GAE, и я выяснил, что покаЯ использовал

persistenceManager.currentTransaction().begin();
// persist and/or retrieve
persistenceManager.currentTransaction().commit();

У меня больше не было проблем.

Надеюсь, я немного помог.

0 голосов
/ 17 января 2012

Загрязнение поля решает проблему, поэтому DataNucleus видит, что оно было изменено.

JDOHelper.makeDirty(...)
...