1

有人知道如何让 db4o 在以下场景中工作吗?我尝试了 cascadeOnUpdate() 但失败了。

class Class1 {
    int field;
}

class Class2 {
    Class1[] clsArray;
}

//I usually change objects of Class2 in this way
Class2 obj = getFromContainer();
obj.clsArray = null;
objectContainer.store(obj);
objectContainer.commit();

问题是 db4o 没有从数据库中删除 Class1 对象,这不符合我的要求。我在 Class2 上尝试了 cascadeOnUpdate(),但它也不起作用。我是否需要循环进入 Class2.clsArray 并明确删除每个对象?或者有没有更简单的方法可以让我技术。

4

2 回答 2

0

抱歉,我没有早点回答您的问题,但希望我还为时不晚。

除了cascadeOnUpdate,还有cascadeOnDelete。有关如何使用它的参考,请看这里看这里。有一个这样的例子:

EmbeddedConfiguration configuration = Db4oEmbedded.newConfiguration();
configuration.common().objectClass(Person.class).objectField("father").cascadeOnDelete(true);

这将做你想要的。您可以通过特定字段(如上)或整个班级分配它:

configuration.common().objectClass(Person.class).cascadeOnDelete(true);

这是关于它的 javadocsObjectClassObjectField.

于 2012-10-19T18:09:01.913 回答
0

您基本上是在寻找某种“垃圾收集”,其中对象被删除,而不再被引用。

db4o 没有这种能力。您需要手动查看数组并删除对象。

于 2012-10-12T21:47:25.093 回答