【发布时间】:2021-12-27 23:49:56
【问题描述】:
我创建了一个字符串形式的 MySQL 查询。我想将它添加到我的 @Query 注释中。我无法从我的函数中获取参数。我在存储库findAllFaces 函数@Query 中尝试了:query,但它不起作用。
【问题讨论】:
标签: java mysql spring-boot annotations
我创建了一个字符串形式的 MySQL 查询。我想将它添加到我的 @Query 注释中。我无法从我的函数中获取参数。我在存储库findAllFaces 函数@Query 中尝试了:query,但它不起作用。
【问题讨论】:
标签: java mysql spring-boot annotations
使用?0、?1、?{index of parameter}....
试试这个:
@Query(value = "SELECT f.id FROM faces f WHERE ?0", nativeQuery = true)
List<String> findAllFaces(String query);
另一个例子:
@Query(value = "SELECT * FROM faces WHERE key1 = ?0 AND key2 = ?1 AND key3 = ?2", nativeQuery = true)
List<String> findByKey1AndKey2AndKey3(String value1, String value2, String value3);
【讨论】:
解决方案 1:
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}
见https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query
解决方案 2:
@Entity
@NamedQuery(name = "User.findByEmailAddress",
query = "select u from User u where u.emailAddress = ?1")
public class User {
}
【讨论】: