使用 id 和对象实例的 JPA 关系
JPA relationship using id and object instance
我有以下 JPA 实体:
@Entity
class User {
Long id;
String name;
// other fields
}
@Entity
class Department {
@Id
Long id;
String name;
// other fields
}
现在我想创建用户和部门之间的关系。创建新用户时,我不想获取部门并使用以下方式设置它:
user.setDepartment(department);
相反,我更喜欢只设置部门 ID:
user.setDepartmentId(departmentId);
并将其留给数据库来验证外键约束。
但是,同时应该可以获取完整的部门数据以及用户。例如我想执行以下 spring-data 查询:
SELECT u FROM UserModel as u LEFT OUTER JOIN FETCH u.department;
是否可以通过以下方式实现:
- Spring数据1.7.1.RELEASE
- 休眠 4.2.16.Final
- JPA 2.0?
您可以使用以下代码:
Department department = entityManager.getReference(Department.class, departmentId);
user.setDepartment(department);
getReference
不会发出 select 并假定此 departmentId
存在。
我有以下 JPA 实体:
@Entity
class User {
Long id;
String name;
// other fields
}
@Entity
class Department {
@Id
Long id;
String name;
// other fields
}
现在我想创建用户和部门之间的关系。创建新用户时,我不想获取部门并使用以下方式设置它:
user.setDepartment(department);
相反,我更喜欢只设置部门 ID:
user.setDepartmentId(departmentId);
并将其留给数据库来验证外键约束。
但是,同时应该可以获取完整的部门数据以及用户。例如我想执行以下 spring-data 查询:
SELECT u FROM UserModel as u LEFT OUTER JOIN FETCH u.department;
是否可以通过以下方式实现:
- Spring数据1.7.1.RELEASE
- 休眠 4.2.16.Final
- JPA 2.0?
您可以使用以下代码:
Department department = entityManager.getReference(Department.class, departmentId);
user.setDepartment(department);
getReference
不会发出 select 并假定此 departmentId
存在。