在INNER JOIN之后,Hibernare从多个表中获取最大日期

时间:2018-01-14 18:01:27

标签: hibernate

我有两张桌子

表1

ID |  HOTEL ID | NAME 
1       100      xyz 
2       101      pqr
3       102      abc

表2

ID | BOOKING ID | DEPARTURE DATE | AMOUNT
1         1       2013-04-12        100
2         1       2013-04-14        120
3         1       2013-04-9          90
4         2       2013-04-14        100
5         2       2013-04-18        150
6         3       2013-04-12        100

我希望结果为

ID | BOOKING ID | DEPARTURE DATE | AMOUNT
2         1       2013-04-14        120
5         2       2013-04-18        150
6         3       2013-04-12        100 

如何在hibernate查询语言中实现此目的。我最好使用hibernate .createQuery("")。list()

2 个答案:

答案 0 :(得分:0)

select table12.ID,table12.BOOKING_ID,table12.DEPARTURE_DATE,table12.AMOUNT from table2 table12 
where table2 table12 .BOOKING_ID IN (select distinct table22.BOOKING_ID
                      from table2 table22 
                      order by table22.DEPARTURE_DATE desc );

检查这个,迟到了解。

答案 1 :(得分:0)

根据您要求的结果集,您不需要将其与酒店表格一起加入,因为您可以从预订表中自行检索必要的数据。

您可以尝试以下hql(您可能需要根据您的要求更改列名称)

String hql = "(SELECT b.id, b.booking_id, MAX(b.amount), b.booking_date FROM Booking b GROUP BY b.booking_id)"
session.createQuery(hql).list();