org.hibernate.exception.JDBCConnectionException: не удалось открыть соединение] с root причиной java .lang.NullPointerException - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть проект JPA mvc, который выдает эту ошибку. Это базовое приложение c crud, использующее EntityManager из JPA.

Hibernate: select user0_.user_id as user_id1_0_, user0_.display_picture as display_2_0_, user0_.email as email3_0_, user0_.enabled as enabled4_0_, user0_.first_name as first_na5_0_, user0_.forgot_password as forgot_p6_0_, user0_.last_name as last_nam7_0_, user0_.password as password8_0_, user0_.role as role9_0_ from users user0_
Feb 28, 2020 1:23:56 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 08001
Feb 28, 2020 1:23:56 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Could not create connection to database server.
Feb 28, 2020 1:23:56 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/cesc] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection] with root cause
java.lang.NullPointerException

Я предполагаю, что соединение установлено, потому что генерируется запрос Hibernate. Но я все еще не уверен. Я импортировал все необходимые файлы JAR с весенней версией 4.2.4

Вот мой код

UserDaoImpl

@Component
@Transactional(value = "txManager")
public class UserDaoImpl implements UserDao{


    @PersistenceContext
    EntityManager em;


    @Override
    public User getUser(String paramUser) {
        // TODO Auto-generated method stub
        User user = em.find(User.class, paramUser);
        return user;
    }


    @Override
    public void updateDP(String username) {
        // TODO Auto-generated method stub

        User user = em.find(User.class, username);
        user.setDisplay_picture("resources/images/admin/" + username + ".jpg");
        em.persist(user);
    }

    @Override
    public String updateUser(User paramUser, String origName) {
        // TODO Auto-generated method stub
        if(!(StringUtils.isEmpty(paramUser.getFirst_name()) && StringUtils.isEmpty(paramUser.getLast_name()) && 
             StringUtils.isEmpty(paramUser.getPassword()) && StringUtils.isEmpty(paramUser.getRole()))) {   

            User user = em.find(User.class, origName);

            user.setFirst_name(paramUser.getFirst_name());
            user.setLast_name(paramUser.getLast_name());
            user.setPassword(paramUser.getPassword());
            user.setRole(paramUser.getRole());
            user.setEmail(paramUser.getEmail());
            user.setDisplay_picture(paramUser.getDisplay_picture());
            user.setEnabled(true);
            user.setForgot_password(0);

            em.persist(user);

            return "success";
        }
        else
            return "error";
    }

    @Override
    public String insertUser(User paramUser) {
        // TODO Auto-generated method stub

        em.persist(paramUser);

        return "success";
    }

    @Override
    public List<User> getAllUsers() {
        // TODO Auto-generated method stub

        Query query = em.createQuery("select u from User u");

        List<User> users = query.getResultList();

        return users;
    }

    @Override
    public String deleteUser(User paramUser) {
        // TODO Auto-generated method stub

         User user = em.find(User.class, paramUser.getUser_id());
         user.setEnabled(false);
         em.persist(user);

         return "Success";
    }


    @Override
    public boolean updateForgottenPassword(User paramUser) {
        // TODO Auto-generated method stub

        User user = em.find(User.class, paramUser.getUser_id());
        user.setPassword(paramUser.getPassword());
        user.setForgot_password(1);

        em.persist(paramUser);

        return true;
    }
}

Контроллер

@RestController
public class LoginController {

    @Autowired
    private UserDao dao;

    @RequestMapping(value="/welcome")
    public void test() {
        System.out.println(dao.getAllUsers());
    }
}

application- config

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
       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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/data/jpa
       http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>classpath:com/cesc/resources/database_conn.properties</value> <!-- class path is requried when runing from web app -->
        </property>
    </bean>

    <tx:annotation-driven transaction-manager="txManager"/>
    <!-- To Enable JPA Repository and to refer to the custom transaction Manager name-->
    <jpa:repositories base-package="com.cesc.dao com.cesc.dao.impl" transaction-manager-ref="txManager"> </jpa:repositories>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="${user_db_driver}" />
        <property name="url" value="${user_db_url}" />
        <property name="username" value="${user_user}" />
        <property name="password" value="${user_password}" />
    </bean>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="generateDdl" value="false" />
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
            </bean>
        </property>
        <property name="packagesToScan" value="com.cesc.entity"></property>
    </bean>

    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <!--  custom transaction Manager -->
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>


</beans>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...