HQL查詢 HQL Named parameter [xxx] not set 的解決辦法


org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter [xxx] not set;

 nested exception is org.hibernate.QueryException: Named parameter [xxx] not set

 

翻譯過來就是參數未定義/命名,

 1.檢查HQL查詢語句參數傳遞方式是否正確,包括createQuery().setParameter的時候,參數名要用雙引號包起來

 2.如果是分頁查詢+條件查詢的話,兩個查詢都要setParameter,

 * 拼字符串的方式傳遞參數查看語句是否拼接正確

* 占位符?來傳遞參數(索引從0開始,傳遞的值不用單引號/Hibernate自動加了

:參數名來傳遞參數,setParameter的時候參數名要用雙引號包起來

* 如果傳遞多個參數,可以采用setParamterList方法

3.不要拿HQL當SQL來寫,正常HQL的語句是 "form  映射表的類名 where 映射字段的屬性名 = :要傳遞的屬性名"

4.大小寫問題,要和映射表的類名保持一致,要不然連表也找不到,報Table is not exist

還沒有解決的話看看掃描路徑是否正確

當傳輸的值有空時也會報could not locate named parameter(無法定位命名參數)

找不到實體,在hibernate配置加上packagesToScan的property

有時候數據庫里的字段類型和傳遞參數類型不匹配也會報錯,這個仔細看控制台信息就能看到,改成相應的數據類型即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM