今天我在使用Hibernate 的SQL預編譯之后注入參數的形式寫了一條模糊查詢語句。剛開始我是這么寫的
然后當我執行這條SQL語句后
可以看到結果是無效字符SQL異常。
然后我查了下原因,發現以上SQL在預編譯時缺少 ' ' 才導致SQL異常
下面我改成這種方式
結果輸出如下
這問題原因是什么呢?
原因:HQL語句中''中的?沒有解析成占位符,確解析成字符串了。
所以按照要求要去掉' ',但去掉' '就會報上面一項錯誤。
在我咨詢了同事自后,我的問題得到了解決。解決的方法就是使用SQL 中的 || 字符串連接符。
這種方式就避免了上面兩種方式帶來的異常問題 ,而且還是用了SQL預編譯,防范了SQL注入攻擊。
以上是我工作中一個小問題,特此記錄,以備以后自己查閱