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();
  • 相关阅读:
    容斥相关
    动态点分治
    杜教筛
    上下界网络流的理解
    putty securecrt
    借款费用
    在线画图工具
    费用包括(营业成本)和(期间费用)
    信用减值损失
    采用权益法核算的长期股权投资,被投资单位宣告发放现金股利
  • 原文地址:https://www.cnblogs.com/codecat/p/12096717.html
Copyright © 2011-2022 走看看