Flyway Spring JPA2 集成 - 可以保持模式验证吗?
Flyway Spring JPA2 integration - possible to keep schema validation?
嗨,我有一个网络应用程序,我试图在其中集成 JPA2(Hibernate)+Spring+Flyway
我将 flyway 添加到我的 ApplicationContext 中,如下所示:
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="baselineOnMigrate" value="true" />
<property name="dataSource" ref="dataSource" />
</bean>
理论上这可以正常工作并使用我保存在 db/migration 下的脚本更新架构。到目前为止一切顺利。
留给我的一个问题是,如果我更改某些内容(例如,将字符串字段添加到实体),应用程序甚至不会走到这一步,因为 Hibernates Schema-Validator 会抛出如下内容:原因:org.hibernate.HibernateException:缺少列:demo.testEntity 中的 showCaseField。发生这种情况是因为我已将 "hibernate.hbm2ddl.auto" 设置为 "validate"
现在我已经阅读了有关 Hibernate 在某些(罕见?)情况下无法识别完美有效模式的信息,并且我可能(或不会)有一天达到我完全禁用此功能的地步。但截至目前,我实际上喜欢额外验证并且不想将其关闭。
是否可以在保持 Hibernates-Schema-Validation 的同时集成 Spring 和 Flyway?我想这可能是个问题,因为 Flyway 可能依赖于 DataSource-bean 或其他东西,总而言之,需要完全初始化 applicationContext,而 Hibernate 又会阻止,因为模式不匹配..
有什么想法吗?
现在找到答案了。基本上,您所要做的就是让您的 entityManagerFactory-bean 依赖于 您的 Flyway bean(有一个属性)。现在 Flyway(以及你的数据源)首先被初始化,Flyway-Scripts 在 Hibernates schema-validation
之前执行
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
depends-on="flyway"> ....
</bean>
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="baselineOnMigrate" value="true"/>
<property name="dataSource" ref="dataSource"/>
</bean>
嗨,我有一个网络应用程序,我试图在其中集成 JPA2(Hibernate)+Spring+Flyway
我将 flyway 添加到我的 ApplicationContext 中,如下所示:
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="baselineOnMigrate" value="true" />
<property name="dataSource" ref="dataSource" />
</bean>
理论上这可以正常工作并使用我保存在 db/migration 下的脚本更新架构。到目前为止一切顺利。
留给我的一个问题是,如果我更改某些内容(例如,将字符串字段添加到实体),应用程序甚至不会走到这一步,因为 Hibernates Schema-Validator 会抛出如下内容:原因:org.hibernate.HibernateException:缺少列:demo.testEntity 中的 showCaseField。发生这种情况是因为我已将 "hibernate.hbm2ddl.auto" 设置为 "validate"
现在我已经阅读了有关 Hibernate 在某些(罕见?)情况下无法识别完美有效模式的信息,并且我可能(或不会)有一天达到我完全禁用此功能的地步。但截至目前,我实际上喜欢额外验证并且不想将其关闭。
是否可以在保持 Hibernates-Schema-Validation 的同时集成 Spring 和 Flyway?我想这可能是个问题,因为 Flyway 可能依赖于 DataSource-bean 或其他东西,总而言之,需要完全初始化 applicationContext,而 Hibernate 又会阻止,因为模式不匹配..
有什么想法吗?
现在找到答案了。基本上,您所要做的就是让您的 entityManagerFactory-bean 依赖于 您的 Flyway bean(有一个属性)。现在 Flyway(以及你的数据源)首先被初始化,Flyway-Scripts 在 Hibernates schema-validation
之前执行<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
depends-on="flyway"> ....
</bean>
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="baselineOnMigrate" value="true"/>
<property name="dataSource" ref="dataSource"/>
</bean>