我有兩個表(關於足球):聯盟和團隊是一對多的關係。現在我想獲得所有聯賽,但只能與那些名字從例如與「S」。休眠HQL查詢與第二個表的條件
到目前爲止,我有這樣的:
Query query = session.createQuery("select l from League l left join l.teams as t with t.name like :name order by l.id");
query.setParameter("name", "S%");
List<League> list = query.list();
該查詢返回所有聯賽,也是所有球隊。它看起來像條件被忽略。
我只想得到所有聯賽以及屬於特定聯賽的那些球隊(由某些條件指定)。所以有可能得到一個沒有球隊的聯賽。
在聯賽等級的變換
@OneToMany(mappedBy = "league", fetch = FetchType.EAGER)
private List<Team> teams;
在組類:
@ManyToOne
@JoinColumn(name = "LEAGUE_FK")
private League league;
我使用Oracle數據庫。 查詢有什麼問題?
在此先感謝。
它的工作原理與你所描述的一樣,但我仍然不明白,爲什麼不能通過某些條件直接選擇球隊。那麼這是如何過濾團隊的唯一方式? – Tomask 2015-03-14 19:02:16
聯盟和球隊之間的聯繫被用來模擬聯盟A擁有球隊1,2和3的事實。聯盟的一個實例代表了數據庫中的聯盟。其團隊集合代表數據庫中聯盟的團隊。它不代表先前的查詢發生了什麼。 – 2015-03-14 22:32:34