Java 将类映射到没有表名的表

Java 将类映射到没有表名的表,java,database,hibernate,Java,Database,Hibernate,我的数据库中有许多表的结构完全相同:相同的列名和类型。 这些表之间唯一的区别是它们的名称(我只能在运行时知道) 我想创建一个类到表的映射,但只在运行时提供表的名称(没有静态@table注释) 可能吗? 有没有其他方法可以实现我的目标?直接-没有。因为这不是一个常规用例。通常,您不应该有动态生成的表。当您将某些记录移动到存档表(或多个表)时,这是一个有效的用法,但在其他方面可以避免 无论如何,您可以这样做:进行本机查询,并将结果映射到非实体对象。您将能够从任何表中进行选择,并将结果转换为对象。但是

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

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

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

直接-没有。因为这不是一个常规用例。通常,您不应该有动态生成的表。当您将某些记录移动到存档表(或多个表)时,这是一个有效的用法,但在其他方面可以避免


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

不要认为动态关联或更改映射到实体的表是可能的

您可以选中@MappedSuperClass,这将允许您一次定义类中的所有字段并继承它们,这样就不会有重复,实体是带有映射的空类


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

运行时是指在应用程序启动期间还是响应用户操作时。如果是在服务器启动时,您可能可以通过实现NamingStrategy来实现它