1. 程式人生 > >Hibernate使用原生SQL多表查詢時欄位名相同導致查詢資料覆蓋問題解決辦法

Hibernate使用原生SQL多表查詢時欄位名相同導致查詢資料覆蓋問題解決辦法

系統測試環境:

MySQL 5.0

Hibernate 3.3


由於使用了hibernate,雖然使用原生SQL繞過了hibernate自己的封裝,但是還是有些影響,比如欄位別名問題;相同的欄位名經過hibernate查詢會出現前一列覆蓋後一列的情況,這時可以用


方法來將表的別名和實體類聯絡起來,這個方法指定了SQL查詢字串,要返回的實體。如果有多張表則以此類推。

SQL語句

select {表1別名.*}, {表2別名.*} from question {表1別名} left join answer {表2別名}  on {表2別名}.id={表1別名}.ansId

取“表1”的值用list.get(0)來獲取,具體欄位則用表1對應的實體類的屬性來取值,表2的值用list.get(1)來獲取,具體欄位同上。

注:

如果報

    [org.hibernate.type.IntegerType] - <could not read column value from result set: id10_0_; Column 'id10_0_' not found.>

等類似錯誤,說明SQL語句有錯或者沒有使用addEntity()方法。