当我尝试更新持久性对象时遇到问题。
我使用。
来检索我的对象objectContainer.query(myObject);
使用以下方法修改并再次保存:
objectContainer.store(myObject);
但是这个对象不会更新,只需保存另一个对象。
我尝试使用对象获取对象:
long idObject = objectContainer.ext()。getID(myObject);
objectContainer.ext().getById(idObject);
但同样的问题。 有人知道会发生什么事吗?
谢谢,对不起我的英语。
答案 0 :(得分:1)
在加载对象和调用objectContainer.Store(myObject)
之间是否关闭了对象容器?对我而言,您似乎没有使用相同的对象容器实例来加载和存储对象。
db4o按其身份识别对象。为此,对象容器具有a map which remembers all loaded objects。当您调用store时,如果它是现有对象,db4o将在该映射中查找。如果是,则更新该对象。否则,它假定该对象是新对象。
解决问题:不要关闭对象容器,而是将其保持打开状态。如果那不是一个选项,则需要从数据库加载对象并将其与包含更改的对象合并。
如果这个答案没有解决您的问题,请告诉我=)