我如何获得JPA& JPQL将完整的连接查询传递给RDBMS?例如,
SELECT e
FROM Employee e
WHERE a.runkey = e.runkey
AND e.middle = 'M'
AND a.state = 'MA'
使用以下Employee类
@Entity
public class Employee implements Serializable {
blah ... blah
@OneToOne
@JoinColumn(
name = "runkey",
referencedColumnName = "runkey",
insertable=false, updatable=false)
private Address address;
}
和JPQL,
SELECT e
FROM Employee e
INNER JOIN FETCH e.address AS a
WHERE a.state = :state
AND e.middle = :middle
我能够让Hibernate JPA按预期提取数据。
但是,eclipselink声称它无法遍历相关字段“地址”。
如果是这样,那么我应该如何设计Employee实体以及我应该如何设置JPQL以使eclipselink在两个表上使用WHERE过滤器执行表连接?
(Rant:否则Eclipselink JPA并不比JDO好!!!)
〜
进一步修改:这篇文章对我的案件意味着什么....
https://forums.oracle.com/forums/thread.jspa?threadID=1568659
答案 0 :(得分:1)
问题是您正在尝试根据JPQL规范对不允许的连接提取进行别名。无论如何,Hibernate允许这样做。 您仍然可以使用query hints获取EclipseLink所需的行为。
看看以下帖子:
以下链接也很有用:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/QueryOptimization