2015-01-04 51 views
0

我有一对多的映射,学校与学生集,我想只得到学校所有学生得分大于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内置函数,以获得相同的结果。

+1

好了,我不知道你真正的“语法糖”的意思。如果你更喜欢面向对象的方式,你可以使用JPA/Hibernate标准api。另外,请考虑http://www.querydsl.com/。 – slnowak 2015-01-04 10:26:26

+0

“语法糖”我的意思是更短的方式来做同样的查询,HQL构建函数。我不想做群体和拥有。 – blakqzz 2015-01-04 11:02:03

回答

1

你需要一个子查询:

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) 
+0

感谢您回答问题。是否有一个HQL内置函数会得到相同的结果,可能类似于“从学校的连接s.students st中选择所有(st.score)> 3”。 – blakqzz 2015-01-04 11:30:03

+0

我不这么认为。 – 2015-01-04 12:41:10