Отношения JPA с использованием идентификатора и экземпляра объекта

1

У меня есть следующие объекты JPA:

@Entity
class User {
  Long id;

  String name;

  // other fields
}

@Entity
class Department {
  @Id
  Long id;

  String name;

  // other fields
}

Теперь я хотел бы создать отношения между пользователем и отделом. Когда создается новый пользователь, я не хочу получать Департамент и устанавливать его, используя:

user.setDepartment(department);

Вместо этого я предпочитаю просто установить идентификатор отдела:

user.setDepartmentId(departmentId);

и оставить его для базы данных для проверки ограничения внешнего ключа.

Однако в то же время должно быть возможно получить полные данные отдела вместе с пользователем. Например, я хотел бы выполнить следующий запрос весенних данных:

SELECT u FROM UserModel as u LEFT OUTER JOIN FETCH u.department;

Можно ли достичь:

  • Весенние данные 1.7.1.RELEASE
  • Hibernate 4.2.16.Final
  • JPA 2.0?
Теги:
spring
hibernate
jpa

1 ответ

2
Лучший ответ

Вы можете использовать следующий код:

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

getReference не выдаст select и предположит, что этот departmentId существует.

  • 0
    Хорошо, можно ли извлечь из ключа UserModel только ключ DepartmentId без объединения?
  • 1
    Да, вы можете написать user.getDepartment (). GetId (), и он должен работать без объединений. Обязательно аннотируйте свойство id с помощью @Access(PROPERTY) чтобы getId () не запускал загрузку объекта Department .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню