objectdb:update child set<>删除一个孩子后父母的工作不起作用

时间:2014-07-09 08:24:02

标签: jpa objectdb

在我的应用程序中,我有两个实体Person and Activity

@Entity
public class Person
{
  .
  .
  .
  @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,orphanRemoval=true)
  Set<Activity> a;

  // getters setters constructors
}

......和......

@Entity
public class Activity
{
  .
  .
  .
  // getters setters constructors
}
  1. 首先,我创建了两个Activity对象
  2. 我将活动的对象添加到Person对象
  3. 我持久化Person对象(两个活动对象是持久的,它工作正常)
  4. 然后我从我的数据库中删除一个Activity对象
  5. 我从数据库中选择我的Person对象
  6. 结果是一个Person对象Set<Activity> size=2

    有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

从数据库中删除Activity对象时,必须更新Person中的集合,并从集合中删除该Activity对象。否则,您将对集合中不存在的Activity对象有一个损坏的引用。

另一方面,由于您启用了orphanRemoval,因此您只需从Person中的集合中删除Activity,它也应该从数据库中自动删除。

另一种选择是将集合定义为mappedBy,然后当从数据库中删除Person时,从数据库再次加载Person对象或刷新时,该集将自动更新。