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

时间:2014-08-23 03:05:48

标签: 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对象的位置(如果表格不存在,则创建表格)。

我该怎么做?如果我事先知道,我可以去Message课程并手动更改,但我不知道。

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

1 个答案:

答案 0 :(得分:1)

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

更多信息,请转到here