Name for parameter binding must not be null or empty!

今天代码编译的时候报了这么一个错:

java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.
    at org.springframework.util.Assert.hasText(Assert.java:181)
 

我看了又看,不对啊,往常这么写没问题啊!怎么偏偏到这就有问题了。我把一切归结于今天系统重装,很多配置文件都没有了,所以出错了。后来才知道,不仔细阅读提示就改bug是多么的愚蠢!

人家那明明都写了:On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.

可是咱就是不看啊!这谁有办法

我百度了好久,说吧=:换成=?1就行了。嗯,的确行了。但是为啥呢?因为人家写了啊!On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.

废话不多说,先上错误写法:

 @Query(value = "select * from order where order_no=orderno ",nativeQuery = true)
    Order findByOrderNo(String orderno);

正确的写法:

 @Query(value = "select * from order where order_no=orderno ",nativeQuery = true)
    Order findByOrderNo(@Param("orderno") String orderno);

考验你眼力劲儿的时候来了,这俩有啥区别,看出来没有?没看出来?再好好看看!睁大眼睛好好看!

所以,要么你加上@Param注解,要么你就用?1,比如

 @Query(value = "select * from order where order_no=?1 ",nativeQuery = true)
    Order findByOrderNo(String orderno);

OK了不?OK了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值