jpa的@Query中"?"占位符的使用小坑

今天使用@Query自定义查询语句,出现了一个错误:

1 java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
2     at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:502)
3     at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:692)
4     at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:181)
5     at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32)

原因是我再使用“?”占位符的时候,出现了错误,错误代码如下:

1 @Query("SELECT id " +
2 "FROM AbcClass " +
3 "WHERE p2 like '%?1%'")
4 List<Integer> findP1ByP2(String p2);

“?”占位符应该是独立使用的,不能放在字符串中间的,上面的改正后就正常了:

1 @Query("SELECT id " +
2 "FROM AbcClass " +
3 "WHERE p2 like  ?1")
4 List<Integer> findP1ByP2(String p2);

备注:

个人“?”占位符使用经验
查询条件对应的数据类型
=,<>,>,<,like等Integer,String
IN
Collection<?>

转载于:https://www.cnblogs.com/donfaquir/p/10073502.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值