1

如何让 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 过滤器的表连接?

(咆哮:否则Eclipselink JPA并不比JDO好!!!)

~

进一步编辑:这篇文章对我的情况有什么意义....
https://forums.oracle.com/forums/thread.jspa?threadID=1568659

4

1 回答 1

1

问题是您正在尝试对根据 JPQL 规范不允许的连接提取进行别名。无论如何,Hibernate 都允许这样做。您仍然可以使用查询提示通过 EclipseLink 获得所需的行为。

看看以下帖子:

以下链接也很有用:

http://wiki.eclipse.org/EclipseLink/Examples/JPA/QueryOptimization

于 2012-07-24T22:59:35.387 回答