作者adrianshum (Alien)
看板java
标题Re: [问题] Hibernate 表示方法
时间Sat Dec 24 09:40:14 2011
※ 引述《chonmanaeyo (老凤仙)》之铭言:
: 我尝试将原本 SQL Server 可执行的语法
: 改以 Hibernate 撰写,但始终无法正确执行
: 范例如下:
: select convert(varchar(10), A.time, 120), count(A.price)
: from TableX as A, TableX as B
: where A.id = B.id
: and A.time between '2011-12-01 00:00:00' and '2011-12-23 23:59:59'
: group by convert(varchar(10), A.time, 120)
: 主要是那个 convert 不知用什麽方式组合较好
: 希望有人能给予一点方向
: 谢谢
首先我不清楚 SQL Server 的 convert 是搞什麽用的,我
猜是转成 varchar 之类?
我想你这段应该是想写 HQL?
首先,你要用 Hibernate,就请你把你的 model 用比较 OO
的角度去看。它们再不是一堆 table, 然後做join,而是在
model 里已经定义好 model 之间的关系。
另外也没必要再搞什麽 date -> varchar 的转换了吧,直接
取回 model或 model 的 attribute。
你的 self join 也看不出来有什麽用。
要是你真的要写成这样,model 本身关系混乱,或者本身
DB Schema 你没法改得比较合理,那麽这个 query 倒不如
直接用 SQL写算了,反正 Hibernate Session 也可以喂 SQL,
没必要硬写 HQL 可是写出来难看难懂得要命
Alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 183.179.61.91
1F:→ qrtt1:他是想要以天为单位选出 count。 12/24 10:15
2F:推 chonmanaeyo:楼上正解,此举是希望将多项同一天但时间不同的笔数 12/24 10:45
3F:推 chonmanaeyo:能绑成一笔资料 来作加总 12/24 10:48
4F:→ qrtt1:我支持直接写 natvie sql。 12/24 11:06
5F:→ jej:推楼上.. 不然就是也不要count了.. select下来後用map自己作.. 12/24 11:18
6F:推 chonmanaeyo:感谢各位的帮忙,我会试试看 12/25 19:21