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

时间:2012-09-05 14:08:27

标签: java sql hibernate orm

让我说我的数据库中有这样的东西(摘要)

MyTable {
  Long ID Primary Key NOT NULL,
  Date ValidFrom Primary Key NOT NULL,
  Date ValidTo
}

基本上是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)之间的那些行将仅返回Row2和Row3(因为Row1和Row3具有相同的ID,因此我们得到最新的)。

是否有任何查询(条件API?)或者我是否需要获取所有条目然后使用某种方法进行过滤?

1 个答案:

答案 0 :(得分:0)

我结束了它的请求是行,然后采取最新的

Collections.max(...)

使用日期比较器