使用 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;

是否可以通过以下方式实现:

您可以使用以下代码:

Department department = entityManager.getReference(Department.class, departmentId);
user.setDepartment(department);

getReference 不会发出 select 并假定此 departmentId 存在。