2014-01-27 44 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

我试过这个,但它不工作:( –