今天遇到一個hibernate報錯,在查詢的時候,報了一個錯誤
org.hibernate.HibernateException: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1)
然後我把sql語句和傳遞的變量都反覆查了很多遍,sql裏面明明只有一個問號,傳遞也傳遞了一個變量,但就是報錯。
最後同事提醒我把hibernate的原生sql打印出來,才發現hibernate自動在sql的最後加了一句limit ?
然而我的sql語句的最後一行,是被註釋掉的,如
select * from a
where a.id=?
-- and a.id>10
然後hibernate改成了
select * from a
where a.id=?
-- and a.id>10 limit ?
然後,hibernate再把數量限制的參數加上去,就變成兩個參數,但是隻有一個問號了。
最後把最後一行的註釋刪掉就好了