在@Table(name =“ tableName”)中-将“ tableName”设为JPA中的变量


问题内容

我正在使用JPA,需要将“ tableName”设置为变量。

在数据库中,我有很多表,我的代码需要访问指定读取的表。

@Entity
@Table(name = "tableName")
public class Database implements Serializable {...............}

有任何想法吗?


问题答案:

您可以这样做,如果您担心的话,我想。 从未尝试过,这只是一个疯狂的猜测 。但这是通常的做法-我遵循​​“命名查询”;是的,这完全是另一回事。

@Entity
@Table(name = Database.tableName)
public class Database implements Serializable {
    public static final String tableName = "TABLE_1";
    ...............
}

但我不明白为什么有人会这样做。你能告诉我们你在做什么吗?为什么几个表的定义完全相同?

[编辑]

我尝试了您的解决方案。它不起作用,它说:注释属性Table.name的值必须是一个常量表达式。

所以,还不够清楚吗?我的意思是你不能那样做。而且我相信这很合逻辑。如果希望Hibernate生成架构,则可以在架构中使用适当的关系定义所需的所有实体。