我有两个表(关于足球):联盟和团队是一对多的关系。现在我想获得所有联赛,但只能与那些名字从例如与“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