将类映射到没有表名的表

时间:2011-10-01 10:55:18

标签: java database hibernate

我的数据库中有许多表具有完全相同的结构:相同的列名称和类型。 这些表之间的唯一区别是它们的名称(我只能在运行时知道)。

我想创建一个类到表的映射,但只在运行时给出表的名称(没有静态@Table注释)。

有可能吗? 有没有其他方法可以实现我的目标?

2 个答案:

答案 0 :(得分:1)

直接 - 没有。因为这不是一个常规的用例。通常,您不应该使用动态生成的表。将一些记录移动到存档表(或多个表)时,它是一种有效的用法,但除此之外要避免使用它。

无论如何,您可以做到这一点:进行本机查询,并将结果映射到非实体对象。您将能够从任何表中进行选择并将结果转换为对象。但是,您无法以这种方式插入或更新。

答案 1 :(得分:0)

不要认为可以动态地关联或更改映射到实体的表。

你可以检查@MappedSuperClass,它允许你定义一个类中的所有字段并继承它们,这样就没有重复,实体是带有映射的空类。

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e1168

如果您动态了解表名,则可以始终相应地实例化映射的类。