Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate在PostgreSQL中创建模式_Java_Sql_Hibernate_Postgresql - Fatal编程技术网

Java 使用Hibernate在PostgreSQL中创建模式

Java 使用Hibernate在PostgreSQL中创建模式,java,sql,hibernate,postgresql,Java,Sql,Hibernate,Postgresql,我只想在Hibernate SessionFactory初始化后在PostgreSQL server上执行以下SQL: CREATE SCHEMA IF NOT EXISTS "fooschema" AUTHORIZATION "foouser"; 目前我正在使用以下例程: Session s = factory.withOptions().openSession(); SQLQuery query = s.createSQLQuery(sql); int res =

我只想在Hibernate SessionFactory初始化后在PostgreSQL server上执行以下SQL:

CREATE SCHEMA IF NOT EXISTS "fooschema" AUTHORIZATION "foouser";
目前我正在使用以下例程:

Session s      = factory.withOptions().openSession();
SQLQuery query = s.createSQLQuery(sql);
int res        = query.executeUpdate();
// res is 0 and the schema has NOT been created
s.flush();
s.disconnect();
s.close();
连接的用户具有创建新模式的权限。这是一个简单的问题: 我做错了什么

附件:

启用hibernate show_sql将打印以下内容:

Hibernate:
    CREATE SCHEMA IF NOT EXISTS "fooschema" AUTHORIZATION "foouser";
尝试设置属性

 <property name="hbm2ddl.auto" value="create"/>


在hibernate配置中

我的问题的解决方案(感谢@a\u horse\u和\u no\u name)


错误消息是什么?顺便说一句:这样的事情最好使用正确的(版本化的!)DDL脚本来完成。没有错误消息。我没有看到提交。也许这就是问题所在?如果您已经在使用Liquibase,为什么不将其放入Liquibase更改集中?@a_horse_和_no_name我认为创建模式无法还原(它会立即执行),所以提交是必需的您是对的。。。解决方案是将查询放入事务中。这是否也会创建模式?我想它只会创建表。我没有使用hbm2ddl.auto。我只是想为liquibase创建模式,它实际上创建了表。@vralfy您能将hibernate.show_sql设置为true并显示在执行此sql时记录到控制台的内容吗?@smajlo附加了它above@vralfy这很愚蠢,因为可能已经创建了模式,所以这就是为什么您得到0作为回报?
Session s      = factory.withOptions().openSession();
Transaction tx = s.beginTransaction();
SQLQuery query = s.createSQLQuery(sql);
int res        = query.executeUpdate();
tx.commit();