我在将更改存储到复杂对象时遇到了一些问题。我已经做了很多挖掘工作,无法想象我的生活。
从调试开始,我可以清楚地看到对象在存储之前是正确的,但是当我检索存储的数据时,它是空的(比如增加了一个stat)。具体来说,这是下面的细分
StatSheet有玩家的ArrayList 玩家拥有Stats的ArrayList
StatSheets的ArrayList - >播放器的ArrayList - > 统计数据列表 无论我做什么,在进行更改后,Stat对象的ArrayList都不会存储。球员的arraylist似乎更新罚款让我感到困惑。我尝试将更新深度更改为2,3,4,5及更高版本。我也尝试过专门设置cascadeOnUpdate为true。有人可以帮忙,我已经好几天了。
答案 0 :(得分:0)
我看了db4o已经有一段时间了,你没有提供很多关于你的环境或代码的细节,但也许你可以看看这些解决方案:
您使用网络环境吗?所以看看第一个答案:
存储对象时是否使用'commit'?因为在存储和更新过程之后,您应该提交更改。
答案 1 :(得分:0)
对象的数组列表是存储,但db4o不知道如何处理内部对象。 ArrayList不是'Activatable',因此您无法检索您的对象。 您必须将activationPurpose放在存储对象的每个getter / setter上才能启用对象激活。
由于您无法在本机java对象上执行此操作,DB4O会为您提供一些在getter / setter上使用activationPurpose标记的对象:like:
com.db4o.collections.ActivatableArrayList
因此,每个应该存储的java集合必须替换为db4o equivalent(com.db4o.collections。*)。