Hibernate SQLQuery 查詢Oracle char類型結果爲一個字符解決方法

在使用Hibernate的原生態SQL對Oracle進行查詢時,碰到查詢char類型的時候始終返回的是一個字符,開始認爲應該是Hibernate在作映射的把數據類型給映射成char(1),在通過查找網上的一些資料,得知產生這個問題的主要緣由確實是Hibernate再查詢Oracle的時候,將char自動映射成character(varchar的子集)類型,現有如下幾種解決方法:java

1:將你要查詢的實體轉換成實體Bean,使用HQL查詢,這樣就不存在字段映射的問題了,可是這樣比較麻煩;sql

2:能夠使用Hibernate中的addScalar(String arg,Type type)來自定義返回字段的類型,如:this

this.getSession()
		.createSQLQuery("select id,name,state from tb")
		.addScalar("id", Hibernate.STRING)
		.addScalar("name", Hibernate.STRING)
		.addScalar("state", Hibernate.STRING)
		.list();

 這樣就能夠解決,可是這樣的話,必須把全部要查詢的字段進行定義,在字段比較多的時候,就相對比較麻煩;code

3:在Oracle查詢語句中直接指定數據格式,如:get

select id,name,cast(state as varchar(2)) from tb

 這種解決方法比較方便,只須要在查詢語句指定char的返回類型,推薦使用這種方法進行查詢。io

相關文章
相關標籤/搜索