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