1. 程式人生 > >關於Hibernate createSQLQuery模糊查詢結果和資料庫裡查詢結果不一致的問題

關於Hibernate createSQLQuery模糊查詢結果和資料庫裡查詢結果不一致的問題

昨天晚上在做SSH專案時,採用了createSQLQuery來從資料庫查詢資料,資料庫為SQL,查詢語句為:

select * from v_sail_book where BOOK_NAME LIKE '%狼%';

該SQL語句在workbench中的執行結果如圖:

但是在hibernate的createSQLQuery來查詢得到的結果卻是空的,這個問題纏繞了我一晚上,最後終於發現原來是hibernate的配置檔案裡沒有改編碼,最後將hibernate.cfg.xml中的

<property name="connection.url">
            jdbc:mysql://localhost/jsg
</property>

改為了

<property name="connection.url">
            jdbc:mysql://localhost/jsg?useUnicode=true&amp;characterEncoding=UTF-8
</property>

設定資料庫連線的編碼為UTF-8。

初步估計是沒有設定編碼,所以使用createSQLQuery來查詢時中文亂碼了,於是我將上述的SQL語句換為了:

select * from v_sail_book where BOOK_NAME LIKE '%Java%';

於是資料庫的查詢結果和createSQLQuery的查詢結果一樣了,原來真的是編碼的問題,因此大家以後使用hibernate時千萬不要忘了在連線url後加上編碼。