论坛首页 Java版 Hibernate

用hibernate怎样实现这种分页

浏览 4007 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-04-27
数据库:sql server 2k
表结构:
factors: (factor_name, model_id)
header: (header_id, date, ticker)
detail: (header_id, factor_name, factor_value)

其中header_id是header表的primary key。
detail表和header表是多对一的关系。

需求:
客户提供一个date,要求把这一天的所有记录打印出来。因为结果集有几万条记录,所以想要分页。

每一个ticker一条记录。这个ticker对应的所有factor数据,按照不同的factor逐列显示。

比如:
[code:1]
ticker    factor1    factor2    factor3
msft      1             10           20
ibm       20           30           12
sun       7             -5            9
[/code:1]

要求客户可以指定按照任意的factor排序结果。(比如,客户点击factor3,结果和分页就按照factor3的值排序)


问题:
在数据库设计里面,同一个ticker的不同factor的值并不在同一行里。客户端程序得到的结果集是这样的结构:
(ticker, factor_name, factor_value)

如此,排序就不能简单地用一条sql搞定。(除非我用group by + sum)不过这个效率太差,不考虑。

这种情况下如果要分页,hibernate能做么?我现在是手工作的,比较繁琐的说。
   
最后更新时间:2006-04-28
hibernate无法处理,大家有没有比较好的方法来处理呢?
莫非这种header-detail的数据库设计不常见么?不是典型的star schema么?
   
0 请登录后投票
最后更新时间:2006-05-16
為這個查詢建立一個視圖,將表中的數據做一定的行轉列的操作。然後做基於視圖的分頁查詢。
   
0 请登录后投票
最后更新时间:2006-05-16
类似这种统计,hibernate几乎是很难办到的,貌似这也不完全是ORM的指责所在。

以前凡是碰到统计,全部改用JDBC,或者采用视图映射的方式做。
   
0 请登录后投票
最后更新时间:2006-06-30
如果factor和ticker的数量不是很多的话,可以把factor和ticker放到内存里,这样实际上只需要对detail进行操作。对你的题意不是很明白。
   
0 请登录后投票
最后更新时间:2006-07-18
HIBERNATE还是个持久化的框架. 这种复杂一点的计算没有. HQL不支持. 我项目中碰到所有这些不能实现的, 改为用视图, 或原始SQL.
   
0 请登录后投票
最后更新时间:2006-07-21
碰到这种复杂的情况:一般都用存储过程+临时表解决的,
基于oracle数据库
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐