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<?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM