惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
S
SegmentFault 最新的问题
Jina AI
Jina AI
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园 - Franky
量子位
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网

博客园 - 代码猫

Spring boot 打成jar包,并运行jar包。 MySQL中两个DateTime字段相减,得到秒,分,天数 mybatis中大于等于小于等于的写法 Spring boot 自定义注解,Java通过反射获取注解,及注解的说明,附源码下载! Spring boot 自定义注解+@Aspect实现切面输出日志,附源码下载! HTML5 Canvas基础教程 SpringBoot+Jpa动态切换多数据源配置及实现 MySQL使用DATE_FORMAT()函数格式化日期 Java List转String数组与String数组转List MySQL使用IF函数来动态执行where条件 JPA忽略实体类某属性,不持久化某字段的解决方法 git 常用命令 Windows系统CMD窗口下,MySQL建库、还原数据库命令操作示例 MySQL 5.7 执行SQL报错:1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 的解决办法 Java8使用实现Runnable接口方式创建新线程的方法 windows查看端口被占用情况 Windows环境下设置Tomcat8以服务的形式运行,不再打开Tomcat窗口 MySql添加字段命令 Java中String、LocalDateTime、LocalDate、Date互转
Java JPA 报java.lang.IllegalArgumentException: Validation...
代码猫 · 2019-12-25 · via 博客园 - 代码猫

背景

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();