Hibernate:在join中分组

时间:2018-06-05 09:25:15

标签: java sql hibernate

我的数据库中有以下实体:

  • 票务
  • 门票条目

故障单条目链接到故障单,并且有一个引用故障单ID的列。我想要检索仅链接到1个票证条目的票证。我弄清楚SQL脚本应该是什么样子但我不知道应该如何将它转换为Hibernate代码。

extra_js

提前致谢

2 个答案:

答案 0 :(得分:3)

在HQL中非常相似,只需更改连接:

select ticket.id, count(entry.id) 
from
tickets ticket
 join ticket.ticket_entries entry
group by ticket.id
having count(entry.id) = 1

请记住,您将从该查询中获得List<Object[]>,并且您需要在逻辑中适当地提取数据。

答案 1 :(得分:2)

您可以尝试以下HQL:

select t.id
from tickets t join t.ticket_entries entry
group by t.id
having count(*) = 1

与原始SQL查询的主要区别在于,在HQL中,连接不需要ON子句。相反,实体的定义定义了连接关系。

请注意,select *group by结合使用通常是不允许的,或者至少是不可取的。相反,您应该只选择此处的票证id或者其他一些汇总。