如何在Spring Boot的@Query注解中使用方法传入的参数?
@Query注解参数引用失效修复方案
- 首先确认方法参数添加了
@Param绑定
占位符名称需要和@Param注解中声明的名称完全一致,示例如下:public interface FaceRepository extends JpaRepository<Face, Long> { // 注意参数前的@Param注解值和SQL里的:query完全匹配 @Query(value = "你编写的MySQL查询语句", nativeQuery = true) List<Face> findAllFaces(@Param("query") String query); } - 确认原生SQL开关开启
如果你写的是原生MySQL语法而非JPQL,必须添加nativeQuery = true属性,否则框架会按照JPQL规则解析,导致参数和语法识别异常。 - 模糊查询参数提前拼接
如果你的:query参数是用于模糊匹配,不要在SQL语句内拼接%,建议在业务调用层提前处理好参数再传入,避免语法错误:// 业务层调用示例 String searchKey = "需要匹配的内容"; String queryParam = "%" + searchKey + "%"; List<Face> result = faceRepository.findAllFaces(queryParam); - 检查占位符拼写
确认@Query中的:query拼写和@Param中的参数名完全一致,无大小写、特殊符号差异。

内容的提问来源于stack exchange,提问作者codycoder
相关产品推荐
相关产品推荐

