我有一个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查询(不涉及实体)?