Java Hibernate查询复合键(长,日期)选择最新的对象

Java Hibernate查询复合键(长,日期)选择最新的对象,java,sql,hibernate,orm,Java,Sql,Hibernate,Orm,假设我的数据库中有类似的内容(摘要) 基本上是一个在ID和ValidFrom上具有复合主键的实体。现在我有了一些日期范围,例如2012-09-01->2012-09-30 我的问题是:我能做一个智能的hibernate查询吗?它在重复的ID上,但与键的ValidFrom不同,返回这个带有最新日期的查询 例如,数据: Row 1 { Long ID = 1, Date ValidFrom 2012-09-01, Date ValidTo 2012-09-15 } Row2 {

假设我的数据库中有类似的内容(摘要)

基本上是一个在ID和ValidFrom上具有复合主键的实体。现在我有了一些日期范围,例如2012-09-01->2012-09-30

我的问题是:我能做一个智能的hibernate查询吗?它在重复的ID上,但与键的ValidFrom不同,返回这个带有最新日期的查询

例如,数据:

Row 1 {
  Long ID = 1,
  Date ValidFrom 2012-09-01,
  Date ValidTo 2012-09-15 
}

Row2 {
  Long ID = 2,
  Date ValidFrom 2012-09-01,
  Date ValidTo 2012-09-15 
}

Row3 {
  Long ID = 1,
  Date ValidFrom 2012-09-16,
  Date ValidTo null
}
选择在给定日期(2012-09-01->2012-09-30)之间的行将只返回第2行和第3行(因为第1行和第3行具有相同的ID,所以我们得到最新的ID)


是否有任何查询(criteria API?)或我是否需要获取所有条目,然后使用某种方法进行筛选?

我以请求are行,然后使用

Collections.max(...)
带日期比较器

Collections.max(...)