1

有了这个 Pom.xml:

<!-- Hibernate resources -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.2.1.Final</version>
    </dependency>

<dependency>
  <groupId>org.hibernate</groupId>
   <artifactId>hibernate-c3p0</artifactId>
 <version>4.1.6.Final</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>

并使用此上下文 xml:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org     /2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/context   
  http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

<!-- Root Context: defines shared resources visible to all other web components -->



<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>


<bean id="dataSource"
    class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/x" />
    <property name="user" value="x" />
    <property name="password" value="x" />

       <!-- these are C3P0 properties -->
    <property name="acquireIncrement" value="5" />
    <property name="minPoolSize" value="2" />
    <property name="maxPoolSize" value="5" />
    <property name="maxIdleTime" value="1800" />

</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="packagesToScan" value="src.com.x.model.entities"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <!-- configuration pool via c3p0 -->                
            <prop key="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</prop>
            <prop key="hibernate.c3p0.acquire_increment">5</prop>
            <prop key="hibernate.c3p0.idle_test_period">1800</prop>
            <prop key="hibernate.c3p0.max_size">600</prop>
            <prop key="hibernate.c3p0.max_statements">50</prop>
            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.timeout">1800</prop>
        </props>
    </property>
</bean>



<tx:annotation-driven transaction-manager="transactionManager"
    proxy-target-class="true" />

在我启动我的服务器后,我得到以下异常:

WARN : org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider - HHH000148: No JDBC Driver class was specified by property hibernate.connection.driver_class
WARN : com.mchange.v2.async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@724ccdfe -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
WARN : com.mchange.v2.async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@724ccdfe -- APPARENT DEADLOCK!!! Complete Status: 

我在这里做错了什么?我正在使用 spring 3 和 hibernate 4,不幸的是我在 Google 中找不到完全相同的错误消息,所以我想这意味着麻烦

谢谢!

4

1 回答 1

2

你不应该混合这些版本。利用:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.1.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>4.2.1.Final</version>
</dependency>

甚至更好:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernateOrmVersion}</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>${hibernateOrmVersion}</version>
</dependency>

并定义hibernateOrmVersion为 POM 属性

于 2013-05-15T19:34:23.143 回答