Hibernate架构导出失败

时间:2012-02-20 13:38:36

标签: hibernate postgresql spring-roo

我正在使用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的架构导出,或者是否存在配置问题?

2 个答案:

答案 0 :(得分:0)

这显然是配置问题。看一下BasicDataSource source code,会抛出异常,因为BasicDataSource不支持getConnection(String user, String pass),而只支持getConnection()。因此,在致电username之前,必须先设置/配置passwordgetConnection()

希望有所帮助。

答案 1 :(得分:0)

作为一个额外的提示,不要让Hibernate看到用户名,密码属性,因为它转发调用以获得与未实现的方法的数据库连接。 只需在数据源定义中配置数据库设置,就可以了。