zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    List注意点【修改】
    最近遇到的笔试面试题(3)
    关于阅读
    各种语言
    最近遇到的笔试面试题(2)
    最近遇到的笔试面试题(1)
    5自由落体运动
    4 1000以内完数
    3水仙花数
    判断101-200之间的素数
  • 原文地址:https://www.cnblogs.com/codecat/p/12096717.html
Copyright © 2011-2022 走看看