我希望Hibernate创建一个基于实体类的模式,然后Flyway填充表。现在Flyway在创建表之前启动v1__init.sql并抛出异常。我该如何改变这个顺序或者我能做什么解决方案?
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = create-drop
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HSQLDialect
pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<!-- For using 'LEGACYHTML5' mode in Thymeleaf -->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.3.3.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Flyway的Spring Boot自动配置确保在初始化Hibernate之前运行数据库迁移。换句话说,您不能依赖Flyway自动配置并使用Flyway填充由Hinernate创建的表。
一个解决方案是完全接受Flyway,并使用它来创建表和填充表。然后可以关闭Hibernate的表创建(spring.jpa.hibernate.ddl-auto=none
)。这种方法更加健壮,因为它将允许您的数据库更容易地发展。这是我建议你做的。
另一个解决方案是禁用Flyway(Flyway.enabled=false
)的自动配置,并自行配置。然后,您可以将Flyway配置为依赖于Hibernate,以便在Flyway尝试填充表之前,Hibernate已经创建了表。
我添加了application.properties文件,如下所示: spring数据源(DataSourceAutoConfiguration&DataSourceProperties)Spring.DATASOURCE.url=jdbc:mysql://localhost:3306/test?usessl=false Spring.DATASOURCE.username=root Spring
我有一个Java Spring Boot应用程序,在我的Maven pom.xml中将Flyway配置为依赖项(我有一个父pom和一个项目pom...Flyway是在我的项目pom中定义的)。 application.properties中只有几个条目: 我可以运行一个maven任务来让Flyway运行来创建/更新我的数据库,然后针对该数据库运行我的应用程序,但是我很难通过运行我的应用程序(这在p
问题内容: 这是我永远遇到的一个问题。 据我所知,索引的顺序很重要。因此,类似的索引与 并不相同,对吧? 如果我仅定义第一个索引,是否意味着它将仅用于 而不是 由于我使用的是ORM,所以我不知道这些列的调用顺序。这是否意味着我必须在所有排列上添加索引?如果我有2列索引,那是可行的,但是如果我的索引是3列或4列怎么办? 问题答案: 当查询条件仅适用于 部分 索引时,索引顺序很重要。考虑: 如果你的索
尝试从这个Axios调用中获取超文本标记语言,以在b选项卡中呈现。运气不好。除了那里,它在任何地方都有效。对Vue来说还是很新鲜的,有点困惑我在这里错过了什么。我觉得编译在这里可能很有用,但也可能是过度的。 HTML: Vue:
是否可以根据我使用的Spring Boot配置文件加载不同的log4j配置。 假设我在application.properties中 在application-live.properties中,我为所有3个都有不同的值
问题内容: 我在右列中有2列和嵌套行,如何使Bootstrap响应如下, 布局: 这是我的代码: 使用此代码,移动版本为1 3 2的订单为1 2 3。 问题答案: 因为Bootstrap 4使用的是flexbox,所以 列的高度总是相等的 ,因此您将无法获得所需的桌面(lg)布局。 一种选择 是禁用的flexbox 。使用 浮点数 ,以使1,3列自然向右拉,因为2更高。Flexbox 将在移动设备