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