2013-06-28 90 views
0

幫助這個noob程序員。我一直在使用JPA,但似乎有什麼讓我困擾的是它的邏輯使用聯合聲明JPA加入語句邏輯

例如,我有一個名爲Person的實體,與田nameagegender。再例如,在查詢時,

select p from Person p join p.gender g

注:這就是爲什麼我很困惑的例子。

問題是,爲什麼你會join p(人)和p.gender?重點是什麼?它可以給出什麼結果?

回答

1

該點在加入多值關係。加入p.gender沒有意義,我期待p.gender是屬性或單值關係(人可以只有一個性別)。

但是,如果您加入了多值屬性,例如Collection<Order> orders(人可以有多個訂單),那麼你可以搜索具有一些特定的訂單人數:

select p from Person p join p.orders o where o.price > 12000 

這個查詢就會發現其中有一些爲了與價格均人數高於12000 你不能這樣做它沒有加入:

select p from Person p where p.orders.price > 12000 

,因爲orders是多值這將無法正常工作,你不能遍歷像這樣。你必須使用加入(或其他東西,例如子查詢)。