0
我是JPA Hibernate实现的新手,我试图理解EntityManager.merge是如何工作的。
我有两个班,@ManyToOne关系如下列情形JPA合并外键丢失
class A{
private String name;
........
get...
set...
}
class B{
private String name;
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
private A a;
........
get...
set...
}
我有GUI,您可以查看和更改只B房产的 - 在未装载的类并没有打开会话中查看。
当试图保存(合并)在后端的变化:
entityManager.merge(b); //the object "b" created from view has "a" set to null
在B表的外键关系数据库(参考表A)是失去了 - 设置为null;
这不是我想要保持关系和合并 - 保存在GUI中进行的更改,而不会丢失多对一的关系
也许我所期待的是不可能的,我需要做的是:
dbB b = entityManager.find(B.class, id);
dbB.setName(b.getName());
dbB.set........
entityManager.merge(dbB);