使用Northwind 数据库我想进行如下查询
- 每个 Customer.Country 的订单数
- 一周中每一天的 OrderDetails.UnitPrice 的总和是多少
- 每年从 Order.RequiredDate 到 Order.ShippedDate 的平均时间
- ...更多类似这样的查询
我必须使用hibernate才能获得结果,但我强烈认为它毫无意义。现在我使用createSQLQuery()
,因为我可以使用 SQL 轻松获得结果。
但是如何使用HQL
呢?你能给我举个例子吗?我认为使用HQL
并不是最合理的,但我想知道如何做到这一点。
[编辑]
例如可以查询:
select avg(DATEDIFF(ShippedDate, OrderDate)), year(ShippedDate) from orders group by year(ShippedDate)
被翻译成HQL
?还是我应该先获得所有订单并在我的申请中自己计算结果?
或者
select CompanyName, year(ShippedDate), sum(UnitPrice)/sum(Quantity) from shippers
inner join orders on ShipperID = ShipVia
inner join orderdetails on orderdetails.OrderID = orders.OrderID
group by CompanyName, year(ShippedDate)
如果我不要求像 Order 或 Shipper 这样的对象集,我可以使用HQL
吗?
我看过很多教程,但它们都提到了“面向目标”的查询。你能告诉我如何翻译HQL
这些“不寻常”的查询吗?