2013-11-15 59 views
0

所有我想要的是執行下面的SQL我的PostgreSQL服務器上我的SessionFactory已被初始化後:使用Hibernate PostgreSQL中對CREATE SCHEMA

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(); 

所連接的用戶具有權限chreate新圖式。所以這是一個簡單的問題: 我做錯了什麼?

附件:

上打印打開休眠show_sql如下:

Hibernate: 
    CREATE SCHEMA IF NOT EXISTS "fooschema" AUTHORIZATION "foouser"; 
+0

什麼是錯誤信息?順便說一句:像這樣的東西更好地使用正確的(版本!)DDL腳本完成。 –

+0

沒有錯誤信息。 – vralfy

+0

我在那裏看不到提交。也許這就是問題所在?如果你已經在使用Liquibase,你爲什麼不把它放入liquibase變更集? –

回答

0

我的問題的解決方案(感謝@a _horse_with_no_name)

Session s  = factory.withOptions().openSession(); 
Transaction tx = s.beginTransaction(); 
SQLQuery query = s.createSQLQuery(sql); 
int res  = query.executeUpdate(); 
tx.commit(); 
0

嘗試設置屬性

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

在Hibernate配置

+0

這是否也創建* schema *?我雖然只會創建表格。 –

+0

我沒有使用hbm2ddl.auto。我只是想創建liquibase的模式,它實際上創建了表。 – vralfy

+0

@vralfy可以開啓hibernate.show_sql爲true,顯示什麼時登錄執行此SQL安慰? – smajlo