Java JPA 報java.lang.IllegalArgumentException: Validation failed for query for method public abstract ...異常的一種原因和解決辦法


背景

JDK版本:1.8

框架:SpringBoot 2.x

ORM:JPA

異常

全部的異常信息沒有貼出來,太多了,關鍵就下面這一句

java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.Integer com.ess.fsjs.useWaterPlan.dao.PlanTotalIndicatorsDao.queryMaxPlanYear()!

從這個異常信息上看,提示的比較泛,只是說查詢驗證失敗,有多種錯誤可能都會出現這個提示。

找到具體的報錯方法,即:com.ess.fsjs.useWaterPlan.dao.PlanTotalIndicatorsDao.queryMaxPlanYear(),看下代碼:

/**
 * 查詢有計划指標總量的最大年份
 * @return
 */
@Query(value = "select max(plan_year) from t_plan_total_indicators")
Integer queryMaxPlanYear();

很簡單的一個查詢,使用了原生SQL,可以看出SQL沒有問題。JPA使用原生SQL語句時,需要nativeQuery = true,所以問題就出在這里,加上就好了。

修改后的代碼:

/**
 * 查詢有計划指標總量的最大年份
 * @return
 */
@Query(value = "select max(plan_year) from t_plan_total_indicators", nativeQuery = true)
Integer queryMaxPlanYear();

 


免責聲明!

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



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