我正在使用Spring Roo 1.2并将我的数据库连接从mysql更改为postgres。我这样做是通过在Roo shell中激活“持久性设置”并在文件database.properties中设置参数。作为最后一步,我将postgres的jdbc驱动程序包含在pom.xml中作为依赖项。
执行“mvn clean jetty:run”时,我得到以下回复:
2012-02-20 14:31:15,465 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - schema export unsuccessful
java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1062)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:68)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:263)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:219)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:372)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:257)
这是什么意思?是否不支持Postgres的架构导出,或者是否存在配置问题?
答案 0 :(得分:0)
这显然是配置问题。看一下BasicDataSource source code,会抛出异常,因为BasicDataSource
不支持getConnection(String user, String pass)
,而只支持getConnection()
。因此,在致电username
之前,必须先设置/配置password
和getConnection()
。
希望有所帮助。
答案 1 :(得分:0)
作为一个额外的提示,不要让Hibernate看到用户名,密码属性,因为它转发调用以获得与未实现的方法的数据库连接。 只需在数据源定义中配置数据库设置,就可以了。