动态创建表 - CREATE TABLE ... - 使用javax.persistence.EntityManager

时间:2017-03-15 21:54:42

标签: java sql postgresql jpa ddl

我有一个DDL语句来动态创建表

String sql = "CREATE TABLE schema.table_1 ( AAA varchar, BBB double precision )"

我试过

Query q;
/*1 try*/ 
q = getEntityManager().createNativeQuery(sql);
q.executeUpdate();

/*2 try*/ 
q = getEntityManager().createNativeQuery("BEGIN " + sql + " END;");
q.executeUpdate();

/*3 try*/ 
q = getEntityManager().createQuery(sql);
q.executeUpdate();

/*4 try*/ 
q = getEntityManager().createQuery("BEGIN " + sql + " END;");
q.executeUpdate();

我在执行1或3次尝试时遇到错误

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "CREATE"
执行2和4时

或此错误尝试

Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block

我想知道是否有任何其他配置我必须执行以将DDL例程执行到CREATE或DROP TABLE。

所以我的问题是:如何使用EntityManager接口动态创建表,使用NATIVE查询(不涉及实体)?

0 个答案:

没有答案