使用Spring、Hibernate、JPA e C3P0的数据库连接异常

使用Spring、Hibernate、JPA e C3P0的数据库连接异常,spring,hibernate,jpa,c3p0,Spring,Hibernate,Jpa,C3p0,我正在尝试将我的应用程序配置为使用C3P0数据源(我无法使用容器提供的数据源) 但是,当我的应用程序启动时,出现了一个异常: 用户必须提供JDBC连接 下面是我的配置文件: spring-config.xml: <bean id="pum" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> <property name="persistenceXmlLoc

我正在尝试将我的应用程序配置为使用C3P0数据源(我无法使用容器提供的数据源)

但是,当我的应用程序启动时,出现了一个异常:

用户必须提供JDBC连接

下面是我的配置文件:

spring-config.xml:

<bean id="pum" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocations">
        <list>
            <value>classpath*:META-INF/persistence.xml</value>
        </list>
    </property>
</bean>

<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
    <property name="jdbcUrl" value="jdbc:oracle:thin:@host:1521:db" />
    <property name="user" value="dbuser" />
    <property name="password" value="passwd" />
    <property name="minPoolSize" value="5" />
    <property name="maxPoolSize" value="10" />
    <property name="maxStatements" value="0" />
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitManager" ref="pum" />
    <property name="dataSource" ref="pooledDataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />
谢谢大家

这可能会有所帮助:,它基本上说persistence.xml(
org.hibernate.ejb.HibernatePersistence
hibernate.connection.provider\u class
-property?)中缺少一些东西,hibernate的ConnectionProviderFactory选择创建一个UserSuppliedConnectionProvider,已将getConnection定义为:

public Connection getConnection() {
    throw new UnsupportedOperationException("The user must supply a JDBC connection");
}
我还将其与我们自己的Hibernate/JPA设置进行了比较,该设置在C3PO上运行良好,我发现的唯一区别是,在Spring配置xml中定义EntityManagerFactory时,我们将更多的属性传递给c3p0.ComboPooledDataSource,将一些属性传递给org.springframework.orm.jpa.vendor.hibernatejbavendorapter:

<property name="jpaVendorAdapter">          
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="showSql" value="false" />
        <property name="generateDdl" value="false" />
        <property name="databasePlatform" value="${jdbc.dialectClass}" />
    </bean>
</property>         


但我怀疑这可能是真的。persistence.xml中没有定义任何属性。

Hi esaj!这是一个虚拟主机,我不能在互联网上发布正确的主机,好吗?在我的文件中,主机地址是正确的!谢谢@马塞洛·尤文蒂诺:请看我编辑的答案是否有帮助
public Connection getConnection() {
    throw new UnsupportedOperationException("The user must supply a JDBC connection");
}
<property name="jpaVendorAdapter">          
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="showSql" value="false" />
        <property name="generateDdl" value="false" />
        <property name="databasePlatform" value="${jdbc.dialectClass}" />
    </bean>
</property>