Похоже, вы создаете дубликаты объектов в вашей базе данных. Это распространенная проблема (даже более распространенная в веб-сценариях).
Первое, что нужно понять, это то, что идентичность объекта в БД не имеет ничего общего со свойствами и значениями объекта. Таким образом, даже если вы создаете объект с теми же значениями, с помощью new, clone, десериализации и т. Д., Это не тот же объект, что и оригинал. Хранение этого объекта создаст «дубликаты» в вашей базе данных.
Способ, которым db4o работает с идентичностью, заключается в том, что он отслеживает (ссылки) объектов. Это возможно только в том случае, если ваш контейнер объектов db4o открыт и вы находитесь в его контексте. Закрытие контейнера объектов, перемещение объектов вне области вашего приложения и т. Д. Приведет к потере db4o этого объекта.
Существует два распространенных способа решения этой проблемы:
а) Всякий раз, когда вам нужно обновить объект, вы загружаете объект из БД, измените его значение и сохраните его обратно.
b) Используйте метод Bind, чтобы сообщить db4o, что ваш текущий объект совпадает с объектом, который вы хотите обновить в своей базе данных.
Чтобы получить более конкретный совет, вам необходимо поделиться дополнительной информацией о вашем приложении и о том, чего именно вы хотите достичь.