使用DB4O。我有一个object1,它由object2组成,如下所示:
public class Object1Class {
private Object2Class;
}
如果删除object1,关联的object2将被删除,没有问题。
但是,如果删除object2,则object1仍然包含object2。理想情况下,当我删除object2时,object1应该显示对object2的空引用。
所以,我的预感是DB4o在更新DOWN对象树时级联,但它没有级联UP对象树。
我是对的吗?
如果不清楚,我的目标是在更新,更改或删除子对象时更新父对象。
- 在更新子对象后,我可能需要在父对象上调用.store()
吗?
- transparent persistence
会解决此问题吗?
这是我的配置:
EmbeddedConfiguration config = Db4oEmbedded.newConfiguration();
config.file().generateUUIDs(ConfigScope.GLOBALLY);
config.common().objectClass(MyModel.class).cascadeOnDelete(true);
config.common().objectClass(MyModel.class).cascadeOnUpdate(true);
config.common().objectClass(MyModel.class).cascadeOnActivate(true);
config.common().updateDepth(5);
config.common().activationDepth(5);
另外,请注意我所有的持久化类都继承了MyModel类。
以下是有关更新深度的一些信息:
答案 0 :(得分:1)
db4o尝试尽可能地融合“OOP”理念,这意味着它会尝试遵循正常的OOP概念。
在这种情况下,它不会尝试跟踪从子节点到父节点的引用(.net / java运行时也不跟踪此类引用)。
在这种情况下你可以做的是在孩子中添加一个指向其父级的字段,并且每当客户端更新时,相应地更新其父级(你可以使用db4o callbacks)
答案 1 :(得分:1)
当你查询时,看起来你正在内存中删除和在数据库中工作了在删除后做了 commit()吗?
我鼓励使用TA / TP来管理这些问题。
祝你好运 克劳德