xskow's road.
做好自己,做好一切。
BlogJava
首頁
新隨筆
聯系
聚合
管理
數據加載中……
關于Hibernate Native sql query的詭異問題
當要做連表查詢時,比如a和b,如果a1和b1都有一個name字段,使用下面的sql語句:
select a.name, b.name from a1 a, b1 b
假設不作任何處理,毫無疑問返回的是object[]的List,object[0]是a.name, object[1]是b.name。但是,咋們想錯了。。。object[0]和object[1]一樣是a.name,開始認為是hibernate調用jdbc的resultset時使用了如getString("name")這樣的東東,所以得到的都是第0個值。好吧,加個別名試試:
select a.name as name1, b.name as name2 from a1 a, b1 b
這好像可以呀。。。但是卻報錯,找不到name列。。。
好吧,來個ResultTransformer吧!假設轉換目標類為TestDTO.class:
public
class
TestDTO
{
private
String name1;
private
String name2;
//
getters and setters
}
這回應該好了吧?還是一樣的錯誤。。。
注意:使用ResultTransformer的時候,別名注射不能用{name1}這種形式的,這種形式只適用于addEntity的情況!
為什么我要用sql查詢?由于特殊情況,我使用一些和數據庫有依賴的函數,以后轉數據庫要是知道不兼容也肯定是sql那塊的,而不是hql,解決問題就方便多了。(注:hql一樣可以用特定數據庫的函數)而且我連的是多個表,每個表字段十來個,如果用實體查詢的話,每一行就是三個對象,而我需要的只是5個字段而已。而且如果可以用ResultTransformer的話,操作起來也十分方便。
不知道有誰也遇到過同樣問題?還是說大家都不用hibernate進行sql查詢,不管是什么情況?
得再次研究hibernate官方文檔了。。。從文檔的那一章中,完全沒有找到有同名字段然后又使用ResultTransformer的情況。。。
posted on 2009-06-11 09:57
xskow!
閱讀(973)
評論(4)
編輯
收藏
所屬分類:
SSH探索
評論
#
re: 關于Hibernate Native sql query的詭異問題 2009-12-17 21:54
動動
碰到了同樣的問題 沒解決 ,你的解決了嗎?如果解決了 可以告知嗎?
先謝過。
我的郵箱:xiangdong.liu@kvect.com
回復
更多評論
#
re: 關于Hibernate Native sql query的詭異問題 2009-12-19 12:19
Mickey.Shao
@動動
我估計要是你連表的時候有字段名字相同就不行了,最后我還是用了hql解決的。如果連表時候要查的字段名字不一樣就不會有問題。哎。。。
回復
更多評論
#
re: 關于Hibernate Native sql query的詭異問題 2012-09-04 22:59
雙方
哎,我來回答下。這個需要增加別名來回避。為了后人
String sql1 = "select l.pos_id,l.id as add2 from launch l where l.id=2734837";
Object list1 = baseDao.createSQLQuery(sql1).addScalar("add2").uniqueResult(); // 失敗
System.out.println(list1);
注意一點是別名不能是mysql 關鍵字,否則會報錯
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'add from launch l where l.id=2734837' at line 1
回復
更多評論
#
re: 關于Hibernate Native sql query的詭異問題
2012-09-04 23:01
雙方
@雙方
注意要增加這個 addScalar("add2")
http://blog.csdn.net/wfm0105/article/details/6567476
1.1標量查詢
最基本的SQL查詢就是獲得一個標量(數值)的列表。
1sess.createSQLQuery("SELECT * FROM CATS").list();
2sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
將返回一個Object數組(Object[])組成的List,數組每個元素都是CATS表的一個字段值。Hibernate會使用ResultSetMetadata來判定返回的標量值的實際順序和類型。
如果要避免過多的使用ResultSetMetadata,或者只是為了更加明確的指名返回值,可以使用addScalar()。
1sess.createSQLQuery("SELECT * FROM CATS")
2 .addScalar("ID", Hibernate.LONG)
3 .addScalar("NAME", Hibernate.STRING)
4 .addScalar("BIRTHDATE", Hibernate.DATE)
這個查詢指定了:SQL查詢字符串,要返回的字段和類型.它仍然會返回Object數組,但是此時不再使用ResultSetMetdata,而是明確的將ID,NAME和BIRTHDATE按照Long, String和Short類型從resultset中取出。同時,也指明了就算query是使用*來查詢的,可能獲得超過列出的這三個字段,也僅僅會返回這三個字段。
對全部或者部分的標量值不設置類型信息也是可以的。
1sess.createSQLQuery("SELECT * FROM CATS")
2 .addScalar("ID", Hibernate.LONG)
3 .addScalar("NAME")
4 .addScalar("BIRTHDATE")
基本上這和前面一個查詢相同,只是此時使用ResultSetMetaData來決定NAME和BIRTHDATE的類型,而ID的類型是明確指出的。
關于從ResultSetMetaData返回的java.sql.Types是如何映射到Hibernate類型,是由方言(Dialect)控制的。假若某個指定的類型沒有被映射,或者不是你所預期的類型,你可以通過Dialet的registerHibernateType調用自行定義.
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
【轉】ClassNotFoundException:org.hibernate.hql.ast.HqlToken-weblogic使用hibernate hql問題解決
關于Hibernate Native sql query的詭異問題
華南理工大學校運會計分系統項目總結(一)
Powered by:
BlogJava
Copyright © xskow!
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
統計
隨筆 - 8
文章 - 17
評論 - 13
引用 - 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(2)
給我留言
查看公開留言
查看私人留言
隨筆分類
成長道路(5)
(rss)
隨筆檔案
2010年9月 (1)
2009年6月 (1)
2009年5月 (2)
2008年11月 (1)
文章分類
Java(3)
(rss)
Maven2(2)
(rss)
php(1)
(rss)
SSH探索(4)
(rss)
web2.0(1)
(rss)
Web安全(3)
(rss)
前臺Html and JS腳本(3)
(rss)
開發環境(1)
(rss)
測試(1)
(rss)
文章檔案
2010年11月 (1)
2010年9月 (1)
2009年7月 (2)
2009年6月 (7)
2009年5月 (5)
2009年4月 (1)
2008年11月 (1)
搜索
最新評論
1.?re: 解決ubuntu下安裝apache2+php5+mysql時從瀏覽器測試php文件變成提示下載的問題[未登錄]
真的非常感謝你!
--knight
2.?re: 關于Hibernate Native sql query的詭異問題
評論內容較長,點擊標題查看
--雙方
3.?re: 關于Hibernate Native sql query的詭異問題
評論內容較長,點擊標題查看
--雙方
4.?re: 解決ubuntu下安裝apache2+php5+mysql時從瀏覽器測試php文件變成提示下載的問題
哈哈 我的問題解決了
感謝啊
--dante
5.?re: 讓Frameset居中,并且固定寬度的巧妙辦法
謝謝!方便又好用.
--Coker_Ye
閱讀排行榜
1.?JS,真是令我郁悶死了。。。(282)
2.?生活越來越有意思了!(281)
3.?我才知道ziddu...(279)
4.?現在的生活真無聊~(261)
5.?初試IDEA,實在太有挑戰性了(240)
評論排行榜
1.?我才知道ziddu...(0)
2.?初試IDEA,實在太有挑戰性了(0)
3.?現在的生活真無聊~(0)
4.?JS,真是令我郁悶死了。。。(0)
5.?生活越來越有意思了!(0)
links:
主站蜘蛛池模板:
无遮挡a级毛片免费看
|
五月亭亭免费高清在线
|
成人妇女免费播放久久久
|
亚洲一区免费视频
|
亚洲黄色网址在线观看
|
青娱乐在线视频免费观看
|
aⅴ免费在线观看
|
亚洲精品在线免费看
|
国产精品永久免费视频
|
久久久久成人片免费观看蜜芽
|
亚洲国产成人久久综合碰
|
亚洲视频在线观看免费视频
|
一级毛片全部免费播放
|
亚洲欧洲国产视频
|
成人无码区免费A∨直播
|
久久夜色精品国产亚洲av
|
黑人粗长大战亚洲女2021国产精品成人免费视频
|
亚洲国产成+人+综合
|
久久九九免费高清视频
|
亚洲老妈激情一区二区三区
|
亚洲第一综合天堂另类专
|
国产大片免费网站不卡美女
|
久久精品国产亚洲AV麻豆不卡
|
一级视频在线免费观看
|
成人免费无码大片a毛片软件
|
亚洲精品国产第一综合99久久
|
国产成人免费全部网站
|
国产99在线|亚洲
|
一级毛片不卡片免费观看
|
亚洲福利秒拍一区二区
|
精品免费国产一区二区
|
亚洲伊人久久大香线蕉AV
|
免费H网站在线观看的
|
久久久久亚洲精品日久生情
|
大学生一级毛片免费看
|
亚洲春色在线观看
|
国产精品黄页在线播放免费
|
黄色网站软件app在线观看免费
|
亚洲人成人无码网www电影首页
|
中文字幕成人免费高清在线
|
亚洲另类视频在线观看
|