Проблемы с DB4O на Android - Обновление объектов - PullRequest
0 голосов
/ 17 февраля 2011

У меня проблема при попытке обновить объекты персистенции.

Я получаю свои объекты, используя.

objectContainer.query(myObject);

изменено и сохраните снова, используя:

objectContainer.store(myObject);

Но этот объект не обновляется, просто сохраните другой объект.

Я пытался получить объект, используя:

long idObject = objectContainer.ext (). GetID (myObject);

objectContainer.ext().getById(idObject);

Но возникла та же проблема. Кто-нибудь знает, что происходит?

Спасибо, извините, мой английский.

1 Ответ

1 голос
/ 17 февраля 2011

Вы закрывали контейнер объекта между загрузкой объекта и вызовом objectContainer.Store(myObject)?Мне кажется, что вы не используете один и тот же экземпляр объекта-контейнера для загрузки и хранения объекта.

db4o распознает объекты по их идентичности.Для достижения этого контейнер объектов имеет карту, которая запоминает все загруженные объекты .Когда вы вызываете store, db4o просматривает эту карту, если это существующий объект.Если это так, он обновляет этот объект.В противном случае предполагается, что объект является новым.

Чтобы решить проблему: не закрывайте объект-контейнер, а держите его открытым.Если это не вариант, вам нужно загрузить объект из базы данных и объединить его с объектом, содержащим изменения.

Если этот ответ не решит вашу проблему, сообщите мне =)

...