【问题标题】:Hibernate connection error Unable to acquire JDBC Connection] with root cause休眠连接错误无法获取 JDBC 连接] 根本原因
【发布时间】:2020-10-29 09:47:28
【问题描述】:

在 spring mvc 中使用 hibernate 从 DB 获取数据时出现以下异常。

SEVERE: Servlet.service() for servlet [spring] in context with path [/DemoApp] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection] with root cause
java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "this.serverVariables" is null

我的代码块如下。

    Session session = this.sessionFactory.getCurrentSession();
  List<User> listUsr = session.createQuery("From User Where username=\'"+usr.getUsername()+"\' and passphare=\'"+usr.getPassphare()+"\'").list();
  
  System.out.println("Lit user "+listUsr);
 
  if(listUsr != null && listUsr.isEmpty()) {
      System.out.println("Empty details");
  } else {
      System.out.println("Value fetched");
  }

Sevlet 代码..

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
    value="jdbc:mysql://localhost:3306/mycart?useSSL=false" />
    <property name="username" value="root" />
    <property name="password" value="PASWORD" />

</bean>

 <bean id="sessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.demoapp.model" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="connection.autoReconnect">true</prop>
            <prop key="connection.autoReconnectForPools">true</prop>
            <prop key="connection.is-connection-validation-required">true</prop>
            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.max_size">20</prop>
            <prop key="hibernate.c3p0.timeout">300</prop>
        </props>
    </property>
 </bean>
<!-- Step 3: Setup Hibernate transaction manager -->
<bean id="myTransactionManager"
        class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:annotation-driven transaction-manager="myTransactionManager" /> 
<tx:annotation-driven/>

POM 快照示例...

            <dependency>
                <groupId>commons-configuration</groupId>
                <artifactId>commons-configuration</artifactId>
                <version>1.9</version>
            </dependency>

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

    

        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
    
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>5.3.6.Final</version>
        </dependency>

    

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.21.Final</version>
            </dependency>

    
            <dependency>
                    <groupId>org.hibernate.javax.persistence</groupId>
                    <artifactId>hibernate-jpa-2.1-api</artifactId>
                    <version>1.0.0.Final</version>
            </dependency>



                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.26</version>
                </dependency>
                <dependency>
                    <groupId>commons-dbcp</groupId>
                    <artifactId>commons-dbcp</artifactId>
                    <version>1.4</version>
                </dependency>
    
    
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
            <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
                    <version>1.2</version>
            </dependency>

【问题讨论】:

  • 这个问题解决了吗?这个问题的解决方案是什么,请与我们分享。

标签: spring hibernate spring-mvc


【解决方案1】:

这似乎是驱动程序问题。请检查驱动版本和数据库版本。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,无论研究和代码添加如何,我都无法解决该问题。我建议使用 https://start.spring.io/ 重新创建您的项目,添加 Spring Web、Spring Data JPA 和 MySQL 驱动程序依赖项。我还推荐这个视频,因为它通过一个非常简单的连接到 mysql https://www.youtube.com/watch?v=e8g9eNnFpHQ。这有助于我确保我编写的代码都不是问题。我在您的代码中找不到任何明显的错误,但我希望这能提供一些解决方案。

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2021-06-27
      相关资源
      最近更新 更多