Tôi có truy vấn phức tạp qua 7 bảng và muốn biết cách triển khai nó trong Hibernate.Hibernate - Truy vấn phức tạp từ nhiều bảng đến một đối tượng
Nỗ lực hiện tại của tôi là tạo truy vấn bằng session.createSQLQuery và tôi sẽ ánh xạ kết quả cho một thực thể cụ thể.
Tôi không chắc chắn cách thực hiện điều đó như trước đây tôi chỉ làm việc với một bảng thành một thực thể. Tôi sẽ cần phải xác định rằng tôi muốn sử dụng một truy vấn phức tạp có thể mở rộng nhiều bảng? Điều đó chỉ đi trong mã của tôi? Tệp hbm.xml của tôi? Tôi không thể nghĩ ra bất cứ điều gì khác ngoài nỗ lực hiện tại của tôi.
Dưới đây là một ví dụ về truy vấn của tôi:
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";
Vui lòng tham khảo http://stackoverflow.com/questions/21374550/fetching-data-from-multiple-tables-in-hibernate-and-storing-the-result-in-a-bean/21379254 # 21379254 – Touchstone