Представьте себе таблицу emp :
CREATE TABLE emp
( id NUMBER
, name VARCHAR
, dept_code VARCHAR
)
и таблицу dept :
CREATE TABLE dept
( code VARCHAR
, name VARCHAR
)
emp.dept_code
ссылки dept.code
как ForeignKey.
Эти таблицы сопоставлены с объектами JPA, а ForeignKey моделируется как ассоциация:
@ManyToOne
@JoinColumn(name = "dept_code")
private Department department;
Учитывая следующие данные:
emp dept
---------------- ------------------
1 John SALS SALS Sales
2 Louis SALS SUPT Support
3 Jack SUPT
4 Lucy SUPT
Я хотел бы написать запрос JPA, который возвращает всех сотрудников в отдел поддержки. Предположим, я знаю PrimaryKey отдела поддержки ( SUPT
)
Я предполагаю, что это будет:
SELECT emp
FROM Employee emp JOIN emp.department dept
WHERE dept.code = 'SUPT'
Вопрос:
В качестве ключа отдела SUPT
код доступен в таблице emp , есть ли способ переписать запрос JPA , избегая присоединения к объекту отдела?
Приведет ли это к повышению производительности? Или реализация JPA (например, Hibernate) достаточно умен, чтобы избежать присоединения базы данных к таблице dept ?