作者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
→ qrtt1:他是想要以天為單位選出 count。 12/24 10:15
推 chonmanaeyo:樓上正解,此舉是希望將多項同一天但時間不同的筆數 12/24 10:45
推 chonmanaeyo:能綁成一筆資料 來作加總 12/24 10:48
→ qrtt1:我支持直接寫 natvie sql。 12/24 11:06
→ jej:推樓上.. 不然就是也不要count了.. select下來後用map自己作.. 12/24 11:18
推 chonmanaeyo:感謝各位的幫忙,我會試試看 12/25 19:21