如何知道数据库何时准备就绪?
Posted
技术标签:
【中文标题】如何知道数据库何时准备就绪?【英文标题】:How to know when the database is ready? 【发布时间】:2012-07-31 20:08:57 【问题描述】:有时 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 生命周期的侦听器。
【问题讨论】:
显然 JPA 与创建数据库无关。一些实现可能会提供这一点,但它不是 JPA。 【参考方案1】:我认为最好的解决方案是让 Flyway 也创建表格,而不是与 JPA 共享工作。
看看this question and its chosen solution。在那里您可以看到如何将 Flyway 干净利落地绑定到 Hibernate 生命周期中。
话虽如此,我可能还没有意识到更好的方法。
【讨论】:
以上是关于如何知道数据库何时准备就绪?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 jQuery(替代方式)的情况下知道页面何时准备就绪? [复制]