2

我现在在一个报告应用程序上工作了一段时间,我使用休眠来定义我的查询。然而,我越来越觉得,对于报告用例,这不是最好的方法。

  1. 查询只会产生部分列,因此不会产生类型化的对象(除非您在 java 中强制转换所有字段)。
  2. 不直接进入 sql 或 hql 就很难表达查询。

我目前的问题是我想获得每个组的前 N ​​个,例如组中每个元素的最后 5 天,每天我都会显示访问者的数量。

结果应如下所示:

| RowName | 1-1-2009 | 2-1-2009 | 3-1-2009 | 4-1-2009 | 5-1-2009
| SomeName| 1        | 42       | 34       | 32       | 35

将每天每行存储的数据转换为这样的输出的最佳方法是什么?是时候回到常规 sql 并使用无类型数据了吗?

我真的很想为我的结果使用类型化的对象,但是 java 让我的生活变得非常艰难。欢迎任何建议!

4

1 回答 1

1

使用 Criteria API,您可以执行以下操作:

Session session = ...;
Criteria criteria = session.createCriteria(MyClass.class);
criteria.setFirstResult(1);
criteria.setMaxResults(5);
... any other criteria ...
List topFive = criteria.list();

要在 vanilla SQL 中执行此操作(并确认 Hibernate 正在执行您期望的操作),请查看此 SO 帖子

于 2009-04-26T01:43:31.950 回答