天天看點

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

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

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

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

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

但是在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後加上編碼。