有时,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生命周期找到任何东西。
答案 0 :(得分:1)
我认为最好的解决方案是让Flyway创建表格,而不是与JPA共享工作。
看看this question and its chosen solution。在那里你可以看到如何干净地将Flyway绑定到Hibernate生命周期。
话虽如此,我可能还有更好的方法不知道。