【发布时间】:2011-04-09 09:02:16
【问题描述】:
想象一张桌子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表中提供了部门键SUPT代码,有没有办法重写JPA查询避免到部门实体的 JOIN?
这会提高性能吗?或者 JPA 实现(如 Hibernate)是否足够聪明,可以避免数据库连接到 dept 表?
【问题讨论】:
标签: java hibernate jpa jakarta-ee jpql