2
@Query(value="select * from author a where a.last_name= ?1",nativeQuery = true)

What does ?1 mean in the above query?

Vamshi G
  • 23
  • 1
  • 6

1 Answers1

4

This ?1 indicate a positional parameters is a different practice for define a query parameters to advoid some issue like SQL injection, for example:

  • Named parameters:
    String statment = "SELECT * from Users WHERE name=:nameParam and role=:roleParam";

    //some code

    query.setString("nameParam", nameValue);

    query.setString("roleParam", roleValue);
  • Positional parameters:
    String statment = "SELECT * from Users WHERE name=?1 and role=?2";
    
    //some code

    query.setString(1, nameValue);

    query.setString(2, roleValue);
Jens Schauder
  • 77,657
  • 34
  • 181
  • 348
HittingMyCode
  • 74
  • 1
  • 5