我的数据库中有以下实体:
票证条目链接到票证,并且具有引用票证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
先谢了
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[]>,您需要在逻辑中适当地提取数据。
List<Object[]>
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或其他聚合。
ON
select *
group by
id
2条答案
按热度按时间axr492tv1#
在HQL中非常相似,只是稍微更改一下连接:
请记住,您将从该查询中获得一个
List<Object[]>
,您需要在逻辑中适当地提取数据。byqmnocz2#
您可以尝试以下HQL:
与原始SQL查询的主要区别在于,在HQL中,连接不需要
ON
子句,而是由实体定义来定义连接关系。请注意,
select *
与group by
的组合通常是不允许的,或者至少是不建议的。相反,您应该只在此处选择票证id
或其他聚合。