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();
  • 相关阅读:
    ABP初始化
    ABP生成错误:必须添加对程序集“netstandard”的引用
    树莓派安装Mysql
    多对多关系的中间表命名
    dapper.net 存储过程
    Rabbitmq发送方消息确认
    Rabbitmq发送消息Message的两种写法
    ThreadLocal原理
    多模块打包为可执行jar问题
    类中属性加载顺序的demo
  • 原文地址:https://www.cnblogs.com/codecat/p/12096717.html
Copyright © 2011-2022 走看看