Java 使用Spring Boot访问JPA中的MySQL视图

Java 使用Spring Boot访问JPA中的MySQL视图,java,mysql,spring-boot,view,Java,Mysql,Spring Boot,View,我有一个连接到MySQL数据库的spring boot应用程序,我已经能够处理这些表,但现在我创建了一个模型、存储库和服务来访问视图。我在控制器中创建了一条路由以使用此视图,并收到以下错误消息: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist 在MySQL workbench中,当我查看视图时,它如下所示: CREATE ALGORITHM = UNDEFINED

我有一个连接到MySQL数据库的spring boot应用程序,我已经能够处理这些表,但现在我创建了一个模型、存储库和服务来访问视图。我在控制器中创建了一条路由以使用此视图,并收到以下错误消息:

java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
在MySQL workbench中,当我查看视图时,它如下所示:

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`%` 
    SQL SECURITY DEFINER
VIEW `db`.`my_view` AS
    ...
在application.properties中:

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${HOSTNAME:localhost}:${PORT:3306}/${DB_NAME:db}?serverTimezone=UTC
spring.datasource.username=${USERNAME:root}
spring.datasource.password=${PASSWORD:password}
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect

我需要更改数据库中的定义者吗?我以创建时的用户身份登录。请让我知道,如果我需要添加任何信息和任何帮助是非常感谢

修复错误的最简单方法是从SQL脚本中删除任何定义语句。

好的,谢谢!我尝试删除它(完全删除定义者),但当我单击视图的“编辑”时,定义者再次出现,而此时主机不是%s,而是localhost。现在它可以在本地与我的spring boot应用程序一起使用,但例如,如果我想将其部署到AWS,那么它是否仍然有效?@alfiedranger定义器(和SQL安全)子句指定在例行执行时检查访问权限时要使用的安全上下文。