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

标签 mysql sql spring spring-data spring-data-jpa

我正在使用 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

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

最佳答案

您可以参数化的唯一部分是 WHERE 子句中使用的值。考虑 official doc 中的这个样本:

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

关于mysql - 使用 Spring DATA JPA 创建自定义查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42966967/

相关文章:

mysql - json数据中的关系与db中的实际关系

mysql - 当只有极限值时,获取中间的每个值

php - 使用服务器端 : true 后,带有 Ajax 的 DataTable 无法正常工作

sql - 计算SQL中每列中NULL值的数量

java - Spring 和 Hibernate 配置

mysql - 你的 SQL 语法有错误 : MariaDB server + codeigniter + LOAD DATA INFILE

两个unix时间戳之间的MYSQL查询

mysql - 使用 INNER JOIN 排除 MYSQL 查询结果

java - 无法调用 "UserRepository.findAll()",因为 "userRepository"为空

spring - ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent 和 ContextClosedEvent 有什么区别