JPA / Hibernate查询构造

时间:2012-05-03 13:46:04

标签: java hibernate jpql

我从“记录”表中提取记录。 “记录”表有许多列,其中有

  1. client_id,外键映射到客户端表。
  2. creation_date,创建记录的日期
  3. 我想对此表进行查询,但我想每个客户端只获取一条记录(最新的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
    

    我在上面尝试过,似乎所提取的记录不是最新的创建日期。 希望我的问题很清楚

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
)

这当然假设您的Record有一个名为client的父客户端的引用。