admin

使用Spring DATA JPA创建自定义查询?

sql

我正在使用Spring Data JPA进行项目。我在数据库中有一个表作为my_query。

我想创建一个将字符串作为参数的方法,然后将其作为数据库中的查询执行。

方法:

executeMyQuery(queryString)

例如,当我通过

queryString= "SELECT * FROM my_query"

那么它应该在数据库级别运行该查询。

存储库类如下。

public interface MyQueryRepository extends JpaRepository<MyQuery, Long>{
    public MyQuery findById(long id);

    @Modifying(clearAutomatically = true)
    @Transactional
    @Query(value = "?1", nativeQuery = true)
    public void executeMyQuery(String query);

}

但是,它没有按我预期的那样工作。它给出以下错误。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''select * from my_query;'' at line 1

还有什么其他方法可以实现这个目标。提前致谢


阅读 160

收藏
2021-05-10

共1个答案

admin

您可以参数化的唯一部分是在WHERE子句中使用的值。考虑来自官方文档的此示例:

public interface UserRepository extends JpaRepository<User, Long> {
  @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
  User findByEmailAddress(String emailAddress);
}
2021-05-10