使用id和对象实例的JPA关系

时间:2015-02-12 15:10:10

标签: java spring hibernate jpa

我有以下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 Data 1.7.1.RELEASE
  • Hibernate 4.2.16.Final
  • JPA 2.0?

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

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

getReference不会发出选择权,并会认为此departmentId存在。