首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除JPA实体中的收集要素

删除JPA实体中的收集要素
EN

Stack Overflow用户
提问于 2018-10-11 20:56:18
回答 1查看 58关注 0票数 0

很长一段时间以来,我又开始使用JPA了,但我忘得最多了。我有这样的场景:

代码语言:javascript
复制
@Entity
@Table(name = "tablea")
public class TableA implements Serializable {
  ...
  @OneToMany(mappedBy = "taba", CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinColumn(name = "id")
  List<TableB> tableb;
}

@Entity
@Table(name = "tableb")
public class TableB implements Serializable {
  ...
  @ManyToOne
  @JoinColumn(name = "id_tablea")
  TableA taba;

  @OneToOne
  @JoinColumn(name = "id_tablec")
  TableC tabc;
}

@Entity
@Table(name = "tablec")
public class TableC implements Serializable {
  ...
}

正如您所看到的,TableB是一个关联表,我用它来保存TableATableC之间的引用以及更多的信息。只要我添加或修改封装在TableA实例中的TableB对象,实体管理器就会按照我的预期合并对象,数据库也会相应地更新。假设我有一个TableA对象,它在tableb属性中封装了3个TableB对象。我删除了tableb中的一个元素,然后将TableA对象移动(序列化/反序列化)到实体管理器,以便执行entitymanager.merge(tableainstance),但是当我查看数据库时,所有3条TableB记录仍然存在。我没想到会找到他们,出什么问题了?我使用的是JPA 2.0eclipselink 2.5.0

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 18:41:26

  1. 由于TableB处于OneToMany关系的拥有方,因此从TableB中删除对TableA的引用。

tableBInstance.taba=null;

  • Clear在合并后进行缓存。

entitymanager.getEntityManagerFactory().getCache().evictAll();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52760623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档