Tag: 双向关系

为什么hibernate执行两个查询以急切加载@OneToOne双向关联?

我有实体A有一个B实体,而B有一个带有@OneToOne双向关联的A. 现在,当我找到所有A记录时,hibernate在B上执行左外连接的两个查询,如下所示: select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b; select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b WHERE b.id=? 首先查询加载A和B字段,这没关系,但为什么要执行第二次查询来重新加载A? 我认为这个查询加载了B中的A内容,但是这个A显然是包含B的A …所以它已经加载了第一个查询,是不是真的? – 编辑 – 实体A: @Entity public class A implements Serializable{ […]

JPA更新双向关联

让我们假设我们有以下实体: @Entity public class Department { @OneToMany(mappedBy=”department”) private List employees; } @Entity public class Employee { @ManyToOne private Department department } 在更新中我们需要维护关系的两个方面,这是可以理解的,如下所示: Employee emp = new Employee(); Department dep = new Department(); emp.setDepartment(dep); dep.getEmployees().add(emp); 一切都很好,直到现在。 问题是我应该如下所示在双方应用合并,并且我避免第二次合并级联? entityManager.merge(emp); entityManager.merge(dep); 或者正在合并拥有方? 这些合并也应该发生在Transaction或EJB中吗? 或者在一个带有分离实体的简单控制器方法上做它就足够了?