2012-05-03 98 views
1

我從我的「記錄」表中提取記錄。 「記錄」表有很多列,其中有兩列是JPA/Hibernate查詢構建

  1. client_id,外鍵映射到客戶端表。
  2. CREATION_DATE,記錄創建日期

我願做此表的查詢,但我想獲取每個客戶端只有一個記錄(最新CREATION_DATE記錄有偏好)。

下面的工作?

select r.id,r.xx,r.yy 
group by(r.client_id),r.creation_date 
from record r 
order by creation_date desc 

我上面試過,看起來記錄提取不是最新的創建日期。 希望我的問題很明確

回答

0

這應該給你一個很好的起點在HQL。

from Record as r inner join fetch r.client 
where r.creation_date > (
    select max(rec.creation_date) from Record rec 
    where rec.client.client_id = r.client.client_id 
) 

這當然假定您的記錄有一個對其父母客戶端的稱謂client

+1

不'MAX(rec.creation_date)'得到最大整個數據庫;不是爲了小組? – beerbajay

+0

@beerbajay好的......我修復了這個錯誤,以便每個'r'記錄都會得到'r'client_id的最大創建日期。 –

1

只要保持你的查詢,並添加一個WHERE條件:

SELECT r.id,r.xx,r.yy 
GROUP BY(r.client_id) 
FROM record r 
WHERE r.creation_date = (SELECT MAX(creation_date) FROM record tmp WHERE tmp.client_id = r.client_id) 

看看This discussion