Java 弹簧靴和flyway集成-初始顺序

Java 弹簧靴和flyway集成-初始顺序,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个由spring boot创建的EntityManager(和一个数据源),我想添加flyway。但是EntityManager必须在flyway之后创建,flyway必须在数据源之后创建。我必须手动创建整个EntityManager才能添加“依赖于”还是有更简单的方法?Boot不会创建HibernateSessionFactory,所以您可能指的是JPAEntityManager。如果您创建自己的Flyway,它将始终在引导自动配置bean之前初始化。这不是你看到的吗?可能您需要共享一个

我有一个由spring boot创建的EntityManager(和一个数据源),我想添加flyway。但是EntityManager必须在flyway之后创建,flyway必须在数据源之后创建。我必须手动创建整个EntityManager才能添加“依赖于”还是有更简单的方法?

Boot不会创建Hibernate
SessionFactory
,所以您可能指的是JPA
EntityManager
。如果您创建自己的
Flyway
,它将始终在引导自动配置bean之前初始化。这不是你看到的吗?可能您需要共享一个项目。

问题在于使用
spring.jpa.hibernate.ddl auto=validate
(hibernate希望在执行迁移之前验证
数据源,请参阅)。一个简单的解决方法是切换到
spring.jpa.hibernate.ddl auto=none

什么是会话工厂?为什么需要在flyway之后创建它?hibernate的会话工厂-我更新了这个问题。它必须在flyway之后创建/初始化,因为第一个flyway会更改数据库,然后hibernate会验证schemaDid是否找到解决方案?。。。我只是被塞住了眼睛,但仍然没有时间检查Dave Syer的解决方案<代码>@Configuration public class DbConfig扩展了HibernateJPA自动配置{@Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory(JpaVendorAdapter JpaVendorAdapter,Flyway Flyway){return super.entityManagerFactory(JpaVendorAdapter);}}
你说得对。我说的是实体管理器。但是flyway依赖于数据源。所以我得到的是:创建datasource和entitymanger,并将其命名为@PostConstruct,然后初始化flyway。太晚了,我还不确定我是否了解细节。你能把代码放到github里吗?使用Flyway、Boot和Hibernate JPA(如果有帮助的话)。但是在这个项目中,数据源是手动构建的,Flyway迁移是通过
configureDataSource
显式调用的。我不想手动创建数据源。我想使用spring bootThis创建的一个,它可以自动配置所有内容,并且可以正常工作(使用1.1.0,但我确信siumilar必须为1.0.x工作)。@DaveSyer:即使这不是我的问题,我也一样被卡住了。据我所知,您所建议的示例是有效的,因为在1.1.0中存在一个flyway自动配置,但在1.0.x中并非如此。我说得对吗?嗯哼。这是一个“坏的”解决方案,因为它无法实现目标:根据最新的数据库架构验证当前的JPA/Hibernate映射集。上面的链接指向一个标记为已解决的问题,因此可能不再需要该解决方案。标记为已关闭。我的经验是它还没有解决。很可能是我做错了什么。但我的配置似乎很普通。我按照你的建议在GH开了一张新票。