1. 程式人生 > >Hibernate:could not execute query 列名無效

Hibernate:could not execute query 列名無效

java.sql.SQLException: 列名無效

最近換了個專案組,資料訪問層從使用Mybatis變為Hibernate,開發過程中也遇到一些小麻煩,比如我的XX.hbm.xml檔案中的sql打印出來執行查詢,是OK的。但是在專案中呼叫就會報錯 java.sql.SQLException: 列名無效,如下圖。

報錯截圖

原因: 由於習慣了Mybatis自己寫SQL,在XX.hbm.xml檔案中,select 欄位寫少了,導致在對映類中,存在欄位A,而SQL查詢的結果集中卻沒有A欄位
解決: select 儘量使用*號吧,查詢出全部欄位,不會報錯。不過相對效率會低。

隨便一提,
Mybatis和Hibernate使用感受比較:

Mybatis Hibernate
優點 1.SQL靈活,對於複雜查詢有良好的支援;2.使用簡潔 封裝了CRUD操作,對單表查詢有非常好的支援
缺點 需要開發者指定ResultMap 一般情況下需要查詢全部欄位。不過可以使用HQL語句解決,或者使用DetachedCriteria高階查詢