将多个表映射到单个实体

时间:2014-11-11 10:40:08

标签: java hibernate database-design

我有一个数据库,其中包含每月生成的多个表。 e.g

Transaction_01_2014
Transaction_02_2014
Transaction_03_2014
.
.
.
Transaction_12_2014

所有表都具有相同的结构。唯一的区别是最后附加的月份和年份。

是否可以将所有这些表映射到单个@Entity类"事务"在Hibernate?如果是,我是否需要更改一些配置?如果不可能这样,我应该如何从我的java应用程序中以一种微妙而简单的方式对这些表进行操作?

干杯!

2 个答案:

答案 0 :(得分:0)

是。您可以使用 @MappedSuperclass annotation 将多个表映射到单个@Entity类。通过使用此注释创建超级&将它的特性继承到@Table注释中具有不同表的所有子类。 但是,在这种情况下,出现了正常化问题

您可以使用 @SecondaryTable annotation ,它允许您指定一个或多个辅助表,指示实体类的数据存储在多个表中。

有关详情:

  1. @MappedSuperclass - Java Doc Example
  2. @SecondaryTable - Java Doc Example
  3. Tutorial - Map One POJO To Multiple Tables

答案 1 :(得分:0)

如果此新实体的目的是读取不是为了插入,更新和删除,就像报告和监控一样,那么遵循这种方法可能会对您有所帮助:

  1. 您可以创建一个联合所有这些表的数据库VIEW。
  2. 将新的@Entity类映射到这些VIEW将解决问题。
  3. 视图的定义(DDL)需要由数据库作业更新 (每月表格生成并排)