我使用 JPA 注释(Hibernate 实现)来初始化我的数据库架构。我关注这篇文章动态数据源路由 http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/实现动态数据源路由类。
但是,我有两个数据库(映射2个数据源)。我将第一个数据源设置为defaultTargetDataSource。然后开始我的应用程序。当我的应用程序尝试访问第二个数据源时,它告诉我该表不存在。看来 AbstractRoutingDataSource 只为默认数据源创建表,但为其他数据源创建表。
有没有在所有数据库中创建架构的想法?
PS.我正在使用 AbstractRoutingDataSource 来实现我自己的数据库分片。
我猜你正在使用休眠配置:
spring:
jpa:
hibernate:
ddl-auto: update
以反映对数据库模式的实体更改。只要我们使用配置为在启动时连接的单个数据源,这种方法就可以正常工作。
但是,如果您有多个数据源,则无法使用此功能。一般方法与AbstractRoutingDataSource
就是在启动时没有数据源,但在运行时选择它。
如果您选择主数据源,那么它将仅应用于主数据源,因为 hibernates 在启动时应用此功能,但其余数据库将不会被迁移。
为了反映对所有数据库的更改,您可以使用数据库迁移工具,例如 Flyway 或 Liquibase。
Flyway 使用 SQL,并且非常容易配置和使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)