【问题标题】:Deleting Child Entities in JDO在 JDO 中删除子实体
【发布时间】:2011-07-21 15:23:49
【问题描述】:

我想知道在 JDO 中是​​否可以进行以下操作。

我在父类和子类之间存在 1-N 关系。所以我的课看起来像

@PersistenceCapable 
public class Parent { 

    @Persistent 
    private String name; 

    @Elements(mappedBy = "parent", dependent = "true") 
    private List<Children> children; 
}

@PersistenceCapable 
public class Child { 

    @Persistent 
    private String name; 

    @Persistent
    private Parent parent;
}

级联删除工作正常。我可以删除一个父级,它的所有子级都将从数据存储中删除。

如果我查询特定子对象的数据存储并让该查询将其删除,则该子对象将从子对象表中删除,但其父对象的子对象列表将包含一个空条目。

我想这是一个相当愚蠢的问题,但有没有办法让 JDO 在删除孩子时更新父母的列表,还是我必须自己这样做?

感谢您的回复。

【问题讨论】:

  • 提供使用的数据存储、JDO 实现、执行删除的实际持久性代码、日志条目的详细信息
  • DataNucleus Access Platform 2.2 和以下 jars asm-3.1.jar、db4o-7.12.126.14142-all-java5.jar、jdo-api-3.1-SNAPSHOT-20110223.jar、datanucleus.core- 2.2.3.jar、datanucleus-enhancer-2.1.3-jar、datanucleus-db4o.2.1.2.jar。所以我也在使用 DB4O。
  • 字符串名称 = "名称";交易.开始();查询查询 = manager.newQuery(Child.class, "this.name == name"); query.declareParameters("java.lang.String name"); query.setUnique(true); query.deletePersistentAll(name); transaction.commit();
  • 显然是一个特定于 db4o 的问题以及它如何与 DataNucleus 插件交互,并且该插件未维护...... db4o 被邀请对其进行更新,但到目前为止还没有做任何事情。
  • 非常感谢。您会推荐哪个数据存储区?

标签: jdo db4o datanucleus


【解决方案1】:

我推荐没有 DataNucleus 层的 db4o。它只是妨碍了一个性能更好的解决方案。我们进行了测试,发现如果直接使用 db4o,它的性能要好得多,并且使用的资源更少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多