Использование Northwind database Я хотел бы сделать запросы какHQL - необычные запросы
- Количества заказов от каждого Customer.Country
- Что является суммой OrderDetails.UnitPrice на каждый день недели
- Средних время от Order.RequiredDate до Order.ShippedDate каждый год
- ... больше запросов, как эти
я должен используйте спящий режим для получения результата, но у меня есть сильное чувство, что это бессмысленно. Теперь я использую 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)
Если я не прошу набор объектов, например, орден или грузоотправитель, могу ли я использовать HQL
?
Я видел много учебников, но все они относятся к объектно-ориентированным запросам. Не могли бы вы показать мне способ перевести на HQL
эти «необычные» запросы?
что-то, чтобы быть в курсе, что SQLQuery делает зависимой базу данных приложения, HQL является более разумным, чем при использовании SQLqueries ... И критерия предлагает вам более читаемые решения для Dinamic запросов, то не будет боясь использовать эти инструменты, когда это необходимо. Ваш вопрос звучит для меня немного общего, так как вы не предоставляете никакой отправной точки из своих знаний, большинство сторонников будут направлять вас к учебникам. – Ziul
@ Ziul Я отредактировал свой вопрос. Я хорошо знаю SQL, но я новичок в HQL, и я пробовал только базовые примеры. – alicjasalamon