想象一个表emp:
CREATE TABLE emp
( id NUMBER
, name VARCHAR
, dept_code VARCHAR
)
和一个表部门:
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'
问题:
由于emp表中提供了 Department 键SUPT
代码,有没有办法通过避免JOIN 到 Department Entity来重写 JPA 查询?
这会导致性能提升吗?或者 JPA 实现(如 Hibernate)是否足够聪明,可以避免数据库连接到dept表?