說明:FROM子句聲明了兩個標識變量:p和t。p變量表示PlayerEJB entity bean,而t變量表示相關的TeamEJB bean。在t的聲明中引用了之前聲明的p變量。IN關鍵記號表示teams是一個相關bean的集合。p.teams表示式實現了從PlayerEJB bean到它的相關TeamEJB bean的跨越。p.teams表達式中的句點是跨越操作符。
在WHERE子句中,標識變量city之前的句點是一個分隔符,而不是一個跨越操作符。嚴格說來,表達式可以跨越到關聯字段(相關的bean),而不是持續化字段。要訪問一個持續化字段,一個表達式必須使用句點作為分隔符。
表達式不可以對作為集合的關聯字段作更進一步的跨越。在一個表達式的語法中,collection-value字段是一個終結符。因為teams字段是一個集合,所以WHERE子句不可以指定 p.teams.city--這是一個非法的表達式。
示例 5
|
獲得的數據:屬于指定運動聯盟的隊員。
Finder方法: findByLeague(LocalLeague league)
說明:這個查詢中的表達式實現了兩個關聯關系的跨越。p.teams表達式跨越了PlayerEJB-TeamEJB關聯關系,而t.league表達式跨越了TeamEJB-LeagueEJB關系。
在其它示例中,輸入參數是String對象,但是在這個示例中參數是一個類型為一個LocalLeague接口的對象。這個類型與WHERE的比較表達式中的league關聯字段匹配。
示例 6
|
文章來源于領測軟件測試網 http://www.kjueaiud.com/