mysql - 在启动时创建数据库 View - JPA

标签 mysql hibernate spring-boot jpa

我正在使用 ddl-auto: create-drop 在启动时为我的应用程序创建模式 在我需要创建多个 View 之前一切都运行良好。我希望也能够在启动时创建我的数据库 View

@Entity
@Immutable
@Table(name = "my_view")
@Subselect( "my query here" )
Public class MyView {

View 不会自动生成。

 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'db.my_view' doesn't exist
at sun.reflect.GeneratedConstructorAccessor74.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2490)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966)
at sun.reflect.GeneratedMethodAccessor125.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy196.executeQuery(Unknown Source)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)

环境:Mysql、Spring boot、hibernate

最佳答案

您可以使用 Flyway 来初始化您的 View 。

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-execute-flyway-database-migrations-on-startup

如果你走那条路,你可能希望通过将 hibernate.hbm2ddl.auto 切换到 而不是使用 create-drop 来完全使用 Flyway code>validatenone

关于mysql - 在启动时创建数据库 View - JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58538985/

相关文章:

java - Spring JPA - 处理 DB/Repo 异常

java - Thymeleaf + Spring Boot : Error resolving template

java - RestTemplate:没有找到合适的 HttpMessageConverter 异常

mysql - 在 MySQL 中创建仅包含列中具有特定字符串的行的 View

java - 事务注释在 Spring Boot 中不起作用

java - 如何使用JPA获取数据库连接状态?

java - 使用 Spring Mvc 4 的 NetBeans glasfish4 中的 MojoException

java - 当运行可执行 jar 文件时,我有 SQLException : No suitable driver found for jdbc:mysql://localhost:3306/DENTAL

php - 将我的两次 mysql 调用减少为一次

mysql - 如何在一个 select 语句中包含两个嵌套查询?