Tengo una consulta compleja que cruza 7 tablas y quiero saber cómo implementarlo dentro de Hibernate.Hibernate - Consulta compleja de varias tablas a un objeto
Mi intento actual es hacer la consulta usando session.createSQLQuery y yo asignaría el resultado a una entidad en particular.
No estoy seguro de cómo hacer eso, ya que en el pasado solo he trabajado con una tabla en una entidad. ¿Dónde debería especificar que me gustaría utilizar una consulta compleja que pueda abarcar varias tablas? ¿Eso solo va en mi código? Mi archivo hbm.xml? No puedo pensar en nada más allá de mi intento actual.
Aquí es un ejemplo de mi consulta:
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";
Consulte http://stackoverflow.com/questions/21374550/fetching-data-from-multiple-tables-in-hibernate-and-storing-the-result-in-a-bean/21379254 # 21379254 – Touchstone