2011-02-17 51 views
0

我尝试更新持久性对象时出现问题。Android上的DB4O问题 - 更新对象

我使用回收我的对象。

objectContainer.query(myObject); 

修改,并再次使用保存:

objectContainer.store(myObject); 

但这种对象不更新,只保存另一个对象。

我尝试使用GET对象:

长idObject = objectContainer.ext()的getID(myObject的);

objectContainer.ext().getById(idObject); 

但是发生了同样的问题。 有人知道最新情况?

谢谢,对不起我的英语。

+0

我们可以假设你也在某个阶段调用'commit'吗? Gamlor可能就是这样的 - 将一个对象存储到另一个ObjectContainer中以便将其从您检索到的对象中导出,这是此问题的最常见原因。 – 2011-02-17 22:57:12

回答

1

您是否在加载对象和调用objectContainer.Store(myObject)之间关闭对象容器?对我来说,它看起来像你没有使用相同的对象容器实例来加载和存储对象。

db4o通过其身份识别对象。为了达到这个目的,容器有a map which remembers all loaded objects。当您调用store时,如果db4o是现有对象,则在该映射中查找。如果是这样,它会更新该对象。否则,它假定该对象是新的。

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

如果这个答案没有解决你的问题,让我知道=)