У меня есть следующие объекты 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;
Можно ли достичь:
Вы можете использовать следующий код:
Department department = entityManager.getReference(Department.class, departmentId);
user.setDepartment(department);
getReference
не выдаст select и предположит, что этот departmentId
существует.
id
с помощью@Access(PROPERTY)
чтобы getId () не запускал загрузку объектаDepartment
.