我的数据库中有以下实体:
故障单条目链接到故障单,并且有一个引用故障单ID的列。我想要检索仅链接到1个票证条目的票证。我弄清楚SQL脚本应该是什么样子但我不知道应该如何将它转换为Hibernate代码。
extra_js
提前致谢
答案 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
或者其他一些汇总。