如何知道数据库何时准备就绪



有时createEntitymanagerFactory可能需要一段时间,特别是在需要创建数据库的情况下。

我在数据库中使用Flyway,并开始在迁移过程中发现问题。从日志中可以看出,我似乎正在尝试在创建表之前进行迁移。例如

Table "XINCO_CORE_USER" not found; SQL statement:
INSERT INTO `xinco_core_user` (`id`, `username`, `userpassword`, `last_name`, `first_name`, `email`, `status_number`, `attempts`, `last_modified`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Administrator', 'Xinco', 'admin@xinco.org', 1, 0, now()) [42102-168]

JPA是用来创建表的。当我在JPA中启用日志时,它表明上面的错误发生在JPA创建数据库之前。

有没有一种方法可以监听JPA数据库,以知道它什么时候准备好了?我只为实体本身找到了监听器,但没有为PersistenceManager生命周期找到监听器。

我认为最好的解决方案是让Flyway也创建表,而不是与JPA共享工作。

看看这个问题及其选择的解决方案。在那里,您可以看到如何将Flyway干净地绑定到Hibernate生命周期中。

话虽如此,也许还有更好的方法我只是不知道。

最新更新