【发布时间】:2013-11-15 12:19:12
【问题描述】:
我只想在我的 Hibernate SessionFactory 初始化后在我的 PostgreSQL 服务器上执行以下 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";
【问题讨论】:
-
错误信息是什么?顺便说一句:这样的事情最好使用正确的(版本化!)DDL 脚本来完成。
-
没有错误信息。
-
我没有在其中看到提交。也许这就是问题所在?如果您已经在使用 Liquibase,为什么不将其放入 liquibase 更改集中?
-
@a_horse_with_no_name 我认为创建模式无法恢复(它立即执行)所以提交是必要的
-
你是对的......解决方案是将查询放在事务中。
标签: java sql hibernate postgresql