java - Hibernate 中多个模式中的相同表

标签 java mysql hibernate

我有一个 mysql 服务器,运行多个数据库,这些数据库有一些完全相同的表(不要问,我继承了这个项目):

DB01、DB02和DB03有下表:

CREATE TABLE `table1` (
  `id` int(11) NOT NULL,
  `city` varchar(255) DEFAULT NULL,
  `state` varchar(16) DEFAULT NULL,
  `zip` varchar(11) DEFAULT NULL,
  `code` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

他们还有许多其他相同的表,此外,DB01、DB02和DB03还有其他他们独有的表。

是否可以对上面的表结构使用单个模型/服务层,以便我可以使用 Hibernate 单独查询每个表?

我尝试的是设置一个抽象父类(super class)(使用@MappedSuperclass),但这需要有很多继承该类的文件,唯一的区别是@Table(name =“DB01.table1”),@表(名称=“DB02.table1”)...引用。

非常感谢任何指点!

最佳答案

我建议定义多个数据源并动态交换它们。无需增加类。

例如this approach基于org.springframework.aop.target.HotSwappableTargetSource

关于java - Hibernate 中多个模式中的相同表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030566/

相关文章:

mysql - 获取每个 friend 的所有最后一条消息 - SQL

mysql - MySQL 支持 "IF EXISTS"吗?

java - 如何使用 Hibernate/Spring JPA 为 Snowflake 表生成唯一的 AutoIncremented Id?

java - JPA 复合键与 ManyToOne 获取 org.hibernate.PropertyAccessException : could not set a field value by reflection setter of

mysql - OneToOne 即使在 Cascade All 上也无法删除

java - 方法在主类中返回错误值

java - 在 Java 中创建数据可视化/分析仪表板

java - 当用户 Wifi 从一个网络更改为另一个网络时如何获得通知

java - 将 GAE App Engine 数据存储区实体导出到 csv

java - JFreeChart 数据集不适用于 JPanel