У меня сложный запрос, пересекающий 7 таблиц, и я хочу знать, как реализовать его в Hibernate.
Моя текущая попытка - сделать запрос с использованием session.createSQLQuery, и я бы отобразил результат на конкретную сущность.
Я не уверен, как это сделать, так как в прошлом я работал только с одной таблицей для одной сущности. Где мне нужно указать, что я хотел бы использовать сложный запрос, который может охватывать несколько таблиц? Это идет только в моем коде? Мой файл hbm.xml? Я не могу думать ни о чем другом, кроме моей текущей попытки.
Вот пример моего запроса:
String stringQuery =
"select WI.Customer_Id, CU.Card, CU.Code, "+
"PI.Identity_Card, PI.Name, PI.Surname, PI.Gender, "+
"AD.Zip, AD.Geo_Lat, AD.Geo_Long, "+
"CO.City_Geo_Level, "+
"CU.Address_id, CA.Name, "+
"CU.Category_Id, "+
"CU.Status, "+
"Sum(MO.Charged_Points) as Charged_Points, "+
"Sum(MO.Total_Money) as Total_Money, "+
"Count(MO.id) as AmountTransWinner "+
"from Promotions_Winner WI "+
"join Customers CU "+
"on WI.Customer_id = CU.id "+
"join Personal_Info PI "+
"on CU.Personal_Info_Id = PI.id "+
"join Address AD "+
"on CU.Address_Id = AD.id "+
"join Countries CO "+
"on AD.country_id = CO.id "+
"join Campaigns CA "+
"on CU.Campaign_Id = CA.id "+
"join Movements MO "+
"on WI.Movement_Id = MO.id "+
"where WI.Promotion_Id = :pPromotionID "+
"group by "+
"WI.Customer_Id, CU.Card, CU.Fidely_Code, "+
"PI.Identity_Card, PI.Name, PI.Surname, PI.Gender, "+
"AD.Zip, AD.Geo_Lat, AD.Geo_Long, "+
"CO.City_Geo_Level, "+
"CU.Address_id, CA.Name, "+
"CU.Category_Id, "+
"CU.Status";