DB4O更新深度问题

时间:2014-07-16 15:26:07

标签: db4o

我在将更改存储到复杂对象时遇到了一些问题。我已经做了很多挖掘工作,无法想象我的生活。

从调试开始,我可以清楚地看到对象在存储之前是正确的,但是当我检索存储的数据时,它是空的(比如增加了一个stat)。具体来说,这是下面的细分

StatSheet有玩家的ArrayList 玩家拥有Stats的ArrayList

StatSheets的ArrayList - >播放器的ArrayList - > 统计数据列表 无论我做什么,在进行更改后,Stat对象的ArrayList都不会存储。球员的arraylist似乎更新罚款让我感到困惑。我尝试将更新深度更改为2,3,4,5及更高版本。我也尝试过专门设置cascadeOnUpdate为true。有人可以帮忙,我已经好几天了。

2 个答案:

答案 0 :(得分:0)

我看了db4o已经有一段时间了,你没有提供很多关于你的环境或代码的细节,但也许你可以看看这些解决方案:

  • 您使用网络环境吗?所以看看第一个答案:

    A few questions about working with 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。*)。