2012-08-02 58 views
0

有时,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', '[email protected]', 1, 0, now()) [42102-168] 

JPA设置来创建表。当我在JPA中启用日志时,它显示上述错误发生在JPA创建数据库之前。

有没有办法在JPA数据库上侦听它是否准备好?我只找到实体本身的监听器,但没有为PersistenceManager生命周期找到它。

+0

显然,JPA与创建数据库无关。有些实现可能会提供,但它不是JPA。 – DataNucleus 2012-08-03 06:30:22

回答

1

我相信最好的解决方案是让Flyway创建表格,而不是与JPA共享工作。请参考this question and its chosen solution。在那里你可以看到如何干净地将Flyway连接到Hibernate生命周期。

话虽如此,我可能有更好的方式,我只是不知道。

相关问题