Hibernate:联接中的分组依据

ix0qys7i  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(140)

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

  • 机票
  • 门票输入

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

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

先谢了

axr492tv

axr492tv1#

在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[]>,您需要在逻辑中适当地提取数据。

byqmnocz

byqmnocz2#

您可以尝试以下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或其他聚合。

相关问题