【问题标题】:DB4O update depth issuesDB4O 更新深度问题
【发布时间】:2014-10-02 20:19:22
【问题描述】:

我在存储对复杂对象的更改时遇到了一些问题。我已经做了很多挖掘工作,但我一生都无法弄清楚这一点。

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

StatSheet 包含玩家的 ArrayList 玩家拥有 ArrayList of Stats

StatSheets ArrayList -> 玩家ArrayList -> 统计ArrayList Stat 对象的 ArrayList 在进行更改后不会存储,无论我做什么。玩家的数组列表似乎更新得很好,这让我很困惑。我尝试将更新深度更改为 2、3、4、5 及以上。我也尝试过专门将 cascadeOnUpdate 设置为 true。有人可以帮忙吗,我已经在这几天了。

【问题讨论】:

    标签: db4o


    【解决方案1】:

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

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

      A few questions about working with db4o

    • 您在存储对象时是否使用“提交”?因为在存储和更新过程之后,您应该提交更改。

    【讨论】:

    • 我没有使用网络环境。但是,我正在 Android 上开发。另外,我之前没有使用过提交,我已经添加了它,但仍然遇到同样的问题.. :(
    【解决方案2】:

    对象的数组列表已存储,但 db4o 不知道如何处理内部对象。 ArrayList 不是“可激活的”,因此您无法检索您的对象。 您必须将 activationPurpose 放在存储对象的每个 getter/setter 上,以启用对象的激活。

    由于您无法在本机 java 对象上执行此操作,DB4O 为您提供了一些在 getter/setter 上已用activationPurpose 标记的对象:例如:

    com.db4o.collections.ActivatableArrayList

    因此,每个应该存储的 java 集合都必须替换为 db4o 等效项 (com.db4o.collections.*)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2011-04-24
      • 1970-01-01
      • 2023-02-07
      • 2013-09-23
      • 1970-01-01
      相关资源
      最近更新 更多