Caused by: java.sql.SQLException: 索引中丟失 IN 或 OUT 引數:: 1

xz43發表於2012-05-24

今天遇到一個奇怪的異常,是這樣的,之前我定義了一個Long型別的常量,並把它作為以下方法的引數

getHibernateTemplate().get(clazz, id);

可以正常返回指定類的記錄物件。後來,為了業務需要,把這個Long型別的常量改為了Integer型別,結果執行的時候上面的方法報錯,錯誤如下:

Caused by: java.sql.SQLException: 索引中丟失  IN 或 OUT 引數:: 1

按異常資訊的意思,就是傳入SQL的引數個數和SQL需要的引數個數不一致了。我就奇怪了,一共就1個引數,怎麼會報這個錯誤,如是把這個常量改為int型別,還是報同樣的錯誤,最後恢復為當初的Long型別,應用才恢復正常,不再報錯。

這裡需要說明,要查詢的物件裡面id屬性也為Long型別,可能因為這點,所以Hibernate框架就要求傳入的引數也必須是這個型別了,這點可以理解。但因為這塊的不一致而報的錯誤資訊,確很不能讓人理解了,甚至誤導別人的解決思路。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-730859/,如需轉載,請註明出處,否則將追究法律責任。

相關文章