The*_*ger 8 sql jpa repository spring-data-jpa spring-boot
如何在同一个查询中多次使用同一个参数?这是我的查询:
@Query(value = """
SELECT * FROM person WHERE first_name = ? or last_name = ?
""", nativeQuery = true)
List<Person> findPerson(String name);
Run Code Online (Sandbox Code Playgroud)
我需要在查询中使用“name”参数两次,该怎么做?
注意:这只是一个虚拟示例,供我理解逻辑。
我试过这个:
@Query(value = """
SELECT * FROM person WHERE first_name = ?1 or last_name = ?1
""", nativeQuery = true)
List<Person> findPerson(String name);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
@Query(value = """
SELECT * FROM person WHERE first_name = :name or last_name = :name
""", nativeQuery = true)
List<Person> findPerson(@Param("name") String name);
Run Code Online (Sandbox Code Playgroud)
这给了我同样的错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
Run Code Online (Sandbox Code Playgroud)
小智 0
您可以简单地多次使用 ?1 作为第一个参数的引用。基于您的代码的示例:
@Query(value = """
SELECT * FROM person WHERE first_name = ?1 or last_name = ?1
""", nativeQuery = true)
List<Person> findPerson(String name);
Run Code Online (Sandbox Code Playgroud)
或者您可以多次使用命名参数:
@Query(value = """
SELECT * FROM person WHERE first_name = :name or last_name = :name
""", nativeQuery = true)
List<Person> findPerson(@Param("name") String name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7483 次 |
| 最近记录: |