2014-01-27 80 views
0

我在使用PostgreSQL和JPA時遇到了問題。postgresql + jpa + persistence.xml

當我嘗試執行GlassFish上我的應用程序我得到這個錯誤:

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: org.postgresql.util.PSQLException: ERROR: no schema has been selected to create in 
Error Code: 0 
Call: CREATE TABLE CABINET (ID INTEGER NOT NULL, PRIMARY KEY (ID)) 
Query: DataModifyQuery(sql="CREATE TABLE CABINET (ID INTEGER NOT NULL, PRIMARY KEY (ID))") 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:895) 

因此,如何能我指定JPA架構,以便它可以能夠使用PostgreSQL

注:我有添加PostgreSQL的行家扶養:

 <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.1-901-1.jdbc4</version> 
     </dependency> 

請幫助我。謝謝

+0

默認情況下,不需要設置模式。您是否在Glassfish JDBC連接池設置中設置了'DatabaseName'? – unwichtich

+0

肯定是的,我用在Glassfish中的jdbc池中工作。我沒有面對MS SQL Server或MySQL的任何問題。但與postgresql它不起作用 –

回答

0

模式是用postgres中的「search_path」變量指定的。

解決你的問題,你有2個解決方案:

永久搜索添加到您的連接使用的用戶:

ALTER user username set search_path=yourschema ; 

添加即暫時的JDBC連接SEARCH_PATH(我覺得這醜陋)

set search_path=yourschema; 
+0

我試過這個,但它不工作:( –