当前位置: 首页 > 面试题库 >

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

邰胤
2023-03-14
问题内容

我正在使用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生成架构,则可以在架构中使用适当的关系定义所需的所有实体。



 类似资料:
  • 我使用AWS ECS来托管我的应用程序,并使用DynamoDB进行所有数据库操作。因此,我将为不同的环境使用相同的数据库和不同的表名。如dev_users(Dev env)、test_users(Test env)等。(这是我们公司如何在不同环境下使用相同的Dynamo帐户) 因此,我想使用通过“AWS ECS任务定义”环境参数传递的环境变量更改模型类的“tableName”。 例如 我的模型类是

  • 我有一个名为“users”的表,它有一个列名“gender”,其值对于所有受影响的行都是“male”和“female”。 我想要一排-

  • 我使用java PreparedStatment对象来构造一系列批处理的插入查询。查询语句的格式为。。。 ...所以字段值和表名都是变量(即。我有多个具有相同列格式的表,每个插入都将定向到不同的表)。如果我删除“?”tablename变量和硬代码,我可以让执行程序正常工作,但每个准备好的语句都将插入到不同的表中,因此需要保留一个我在使用...执行批处理查询之前立即填充的变量... 我怎样才能让它成

  • 问题内容: 是首选使用“ Id”作为主键的列名还是使用“ [TableName] Id”作为命名约定? 表:帐户 主键:ID - 相对 - 表:帐户 主键:AccountId 在我所看到的实现中,似乎分成了大约50%/ 50%。每种方法的优点和缺点是什么? 跟进: 在我的数据库中使用一种约定,在代码中对我的实体使用另一种约定是否有意义?还是应该让它们保持一致?在大多数ORM中,这如何最好地工作?

  • 我的应用程序在生产环境中运行良好,但当我转到生产环境并运行“heroku run rake db:migrate”时,我会遇到以下错误: 但是,我的数据库中有一个“应用程序”表。这可能与我前几天放弃并重新制作应用程序脚手架有关。我该如何解决这个问题? 因此,当我运行rake:db安装程序时,我会看到以下结果: 我试图删除“创建应用程序”之前的两个。因此,我尝试像这样对heroku数据库进行rake

  • 问题内容: 我正在使用JPA2和两者,并且都有一个属性,例如: 我应该使用什么,哪些是可选的? 在我的特定情况下,我有一个类和一个类,它们有其他要求(据我了解),因为它们是SQL中的保留字。 可行的解决方案将是什么样子?编写查询时我将使用哪个名称来引用实体? 更新:我在中添加了两个注释,并为做了相同的操作,但是现在出现了此错误: 和这个错误 问题答案: @Table是可选的。将POJO类注释为实体