2011-02-17 34 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是現有對象,則在該映射中查找。如果是這樣,它會更新該對象。否則,它假定該對象是新的。

要解決該問題:請勿關閉對象容器,而應將其保持打開狀態。如果這不是一個選項,則需要從數據庫加載對象並將其與包含更改的對象合併。

如果這個答案沒有解決你的問題,讓我知道=)