使用Spring、Hibernate、JPA e C3P0的数据库连接异常
我正在尝试将我的应用程序配置为使用C3P0数据源(我无法使用容器提供的数据源) 但是,当我的应用程序启动时,出现了一个异常: 用户必须提供JDBC连接 下面是我的配置文件: spring-config.xml:使用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
<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>