Проблемы с глубиной обновления DB4O

У меня проблемы с сохранением изменений в сложном объекте. Я много копал и не могу понять этого всю жизнь.

После отладки я ясно вижу, что объект правильный до сохранения, но когда я извлекаю сохраненные данные, он пуст (скажем, увеличение статистики). В частности, вот разбивка ниже

StatSheet имеет ArrayList игроков. У игрока есть ArrayList статистики.

ArrayList of StatSheets -> ArrayList of Players -> ArrayList of Stats ArrayList объектов Stat не сохраняется после внесения изменений, что бы я ни делал. Аррайлист игроков вроде нормально обновляет, что меня смущает. Я пробовал изменить глубину обновления на 2, 3, 4, 5 и выше. Я также пробовал специально установить для cascadeOnUpdate значение true. Может кто-нибудь помочь, я занимаюсь этим несколько дней.


person logan_izer10    schedule 16.07.2014    source источник


Ответы (2)


Я давно смотрел на db4o, и вы не дали много подробностей о своей среде или коде, но, возможно, вы можете взглянуть на эти решения:

  • Вы используете веб-среду? Итак, посмотрите на этот первый ответ:

    Несколько вопросов о работе с db4o

  • Используете ли вы «фиксацию» при хранении своих объектов? Потому что после сохранения и обновления вы должны зафиксировать изменения.

person Erwarth    schedule 27.07.2014
comment
Я не использую веб-среду. Однако я разрабатываю под Android. Кроме того, я раньше не использовал фиксацию, я добавил ее, но у меня все еще та же проблема .. :( - person logan_izer10; 01.08.2014

Список объектов массива хранится, но db4o не знает, что делать с внутренними объектами. ArrayList не активируется, поэтому вы не можете получить свои объекты. Вы должны поместить ActivationPurpose в каждый получатель / установщик вашего сохраненного объекта, чтобы разрешить активацию объекта.

Поскольку вы не можете сделать это с собственными java-объектами, DB4O предоставляет вам некоторые объекты, которые были помечены с помощью ActivationPurpose в геттере / сеттере: например:

com.db4o.collections.ActivatableArrayList

Таким образом, каждая java-коллекция, которая должна быть сохранена, должна быть заменена на эквивалент db4o (com.db4o.collections. *).

person Galigator    schedule 02.10.2014