我有一对多的映射,学校与学生集,我想只得到学校所有学生得分大于3.
以下查询做了这份工作:有没有这种HQL查询糖语法
List list = session.createQuery("select school from School school join school.students st group by school.id having min(st.score) > 3").list();
但我想知道是否有更短的方式,像HQL内置函数,以获得相同的结果。
我有一对多的映射,学校与学生集,我想只得到学校所有学生得分大于3.
以下查询做了这份工作:有没有这种HQL查询糖语法
List list = session.createQuery("select school from School school join school.students st group by school.id having min(st.score) > 3").list();
但我想知道是否有更短的方式,像HQL内置函数,以获得相同的结果。
你需要一个子查询:
select school from School school where not exists(
select student.id from School school2
join school2.students student
where student.score <= 3
and school2.id = school.id)
感谢您回答问题。是否有一个HQL内置函数会得到相同的结果,可能类似于“从学校的连接s.students st中选择所有(st.score)> 3”。 – blakqzz 2015-01-04 11:30:03
我不这么认为。 – 2015-01-04 12:41:10
好了,我不知道你真正的“语法糖”的意思。如果你更喜欢面向对象的方式,你可以使用JPA/Hibernate标准api。另外,请考虑http://www.querydsl.com/。 – slnowak 2015-01-04 10:26:26
“语法糖”我的意思是更短的方式来做同样的查询,HQL构建函数。我不想做群体和拥有。 – blakqzz 2015-01-04 11:02:03