Spring Data JPA查询参数启动时未校验问题咨询
Spring Data JPA启动阶段未校验@Query参数绑定错误的问题
之前一直以为Spring Boot启动(比如执行./gradlew bootrun)时会校验@Query注解的参数绑定,但最近遇到了运行时异常:
org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter not bound : someParamWithTypo nested exception is org.hibernate.QueryException: Named parameter not bound : someParamWithTypo
对应的查询代码如下:
@Query("FROM MyEntity WHERE someField = :someParamWithTypo") MyEntity search(@Param(name = "someParam") String someParam);
可以看到@Query里引用的参数是:someParamWithTypo,但实际方法参数的@Param指定的名称是someParam,参数名完全不匹配,但应用启动却完全正常。奇怪的是,如果故意把MyEntity改成无效的类名(比如MyEnnnntity),启动时就会直接报错。
环境信息:
- Spring Boot: 2.7.1
- Hibernate: 5.6.9
内容的提问来源于stack exchange,提问作者Josh M.
相关产品推荐
相关产品推荐

