java - 使用 JPA 创建对象并将其保存到表中,但将表名称作为参数

标签 java sql hibernate jpa entity

所以我知道,如果我有一个对象(比如 Message 对象)正确注释,我可以这样做:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(databaseName);
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try {
      transaction.begin();

      Message msg = new Message("Message");
      entityManager.persist(msg);
      transaction.commit();
 }

并且该表将使用 Message 注释中的任何值创建。在本例中,假设 Message 的对象具有表名称的注释:

@Table(name = "tableMessage")

因此,将创建表tableMessage,并将Message对象保存到表tableMessage中。

我的问题是,假设我有一个文本字段,用户将在其中输入表的名称,以保存消息对象(如果不存在则创建表)。

我该怎么做?如果我事先知道,我可以转到 Message 类并手动更改它,但我不知道。

PS;我使用 hibernate 作为 JPA 的实现。

最佳答案

JPA 不支持动态创建和映射新表。它需要动态创建新的 Java 类并动态更新映射元数据。您可以使用 JDBC 或 native 查询执行您想要的任何操作。

有关 fo 的更多信息,请访问 here

关于java - 使用 JPA 创建对象并将其保存到表中,但将表名称作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458071/

相关文章:

java - 从使用 3 个相同的 SQL 参数转换为 1 个

php - 将逗号放在 PHP 数字变量中

sql - Rails 动态 'Where' 子句

java - hibernate中具有多个模块的构造函数表达式

java - Spring MVC 中的异常

java - Hibernate vs Spring 连接获取策略

java - 增强for循环遍历Java

java - 如何判断数组中的某个项是否也是数组?

mysql - 从 hibernate 中的一行中选择一列

Java:子进程完成后使用相同的子进程变量是否安全?