如何獲得JPA & JPQL將完整的連接查詢傳遞給RDBMS?例如,JPQL表連接查詢
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
什麼是'N' ?什麼是異常(複製你的堆棧跟蹤)? JOIN FETCH應該可以工作。 – 2012-07-24 22:35:44
不是n,但e - 更正。 – 2012-07-24 22:42:06
「JOIN FETCH應該工作」 - 僅適用於Hibernate JPA或未過濾的eclipselink。當我將供應商更改爲eclipselink時,由於eclipselink不允許我在相關字段上進行過濾,因此失敗。 – 2012-07-24 22:46:15