每月都会生成此表。基本上所有 月度 表的表结构都是相同的。
由于仅使用不同的表名来映射同一实体将需要大量工作,
由于实体的表名毕竟具有相同的表结构,是否可以按以下方式更改实体的表名?
@Entity @Table(name="FOO_JAN2010") // any other ways to generate this dynamically? public class FooJan2010Table { // if we can dynamically set the table name this can be simply named FooTable ... }
如果没有,您可以建议什么方法?
这实际上是不可能的,至少对于标准JPA(这不是我对非标准JPA所做的)至少不是这样,如在以下问题中提到的:
总而言之,JPA没有提供一种“更改”已初始化持久性单元(以及相关的预编译的CRUD查询,预编译的命名查询等)的给定实体的方法。
不过,由于您使用的是Hibernate,所以也许请看一下http://www.hibernate.org/171.html,以了解使用Hibernate Core API可能发生的情况。
我可以想到的另一种选择是使用数据库 同义词 / 别名 :在…更改别名以指向之前,FOO将使用它作为别名。我从未测试过,我不知道它是否适合您的需求。但这是另一个想法。FOO_JAN2010``FOO_FEB2010
FOO
FOO_JAN2010``FOO_FEB2010