Android上DB4O的问题 - 更新对象

时间:2011-02-17 14:14:27

标签: java android db4o

当我尝试更新持久性对象时遇到问题。

我使用。

来检索我的对象
objectContainer.query(myObject);

使用以下方法修改并再次保存:

objectContainer.store(myObject);

但是这个对象不会更新,只需保存另一个对象。

我尝试使用对象获取对象:

long idObject = objectContainer.ext()。getID(myObject);

objectContainer.ext().getById(idObject);

但同样的问题。 有人知道会发生什么事吗?

谢谢,对不起我的英语。

1 个答案:

答案 0 :(得分:1)

在加载对象和调用objectContainer.Store(myObject)之间是否关闭了对象容器?对我而言,您似乎没有使用相同的对象容器实例来加载和存储对象。

db4o按其身份识别对象。为此,对象容器具有a map which remembers all loaded objects。当您调用store时,如果它是现有对象,db4o将在该映射中查找。如果是,则更新该对象。否则,它假定该对象是新对象。

解决问题:不要关闭对象容器,而是将其保持打开状态。如果那不是一个选项,则需要从数据库加载对象并将其与包含更改的对象合并。

如果这个答案没有解决您的问题,请告诉我=)