在@Table(name ="tableName")中 - 使"tableName"成为JPA中的变量

zen*_*ngr 15 java jpa ejb-3.0

我正在使用JPA,我需要将"tableName"变为变量.

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

@Entity
@Table(name = "tableName")
public class Database implements Serializable {...............}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ade*_*ari 6

我猜你可以做这样的事情.没试过,它只是一个疯狂的猜测.但这就是通常的做法 - 我遵循命名查询; 是的,这完全是另一回事.

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

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

将帖子

我试过你的解决方案.它没有用,它说:注释属性Table.name的值必须是一个常量表达式.

那么,还不够清楚吗?我的意思是你不能这样做.我相信它非常符合逻辑.如果您希望Hibernate生成您的架构,那么您可以在架构中以适当的关系定义所需的所有实体.