java - Hibernate、Spring、Dao getSession() NullPointerException

标签 java spring hibernate

我收到错误。

java.lang.NullPointerException
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:143)
at com.walladverts.model.dao.UserDao.findByUsername(UserDao.java:25)

在 findByUsername 中访问 getSession() 时

package com.walladverts.model.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import com.walladverts.exceptions.DataNotFoundException;
import com.walladverts.model.entities.User;
import com.walladverts.util.CustomHibernateDaoSupport;@
Repository("userDao")
public class UserDao extends CustomHibernateDaoSupport {
    public void save(User user) {
        getHibernateTemplate().save(user);
    }
    public void delete(User user) {
        getHibernateTemplate().delete(user);
    }
    public User findByUsername(String username) throws DataNotFoundException {
        Session session = getSession();
        Criteria crit = session.createCriteria(User.class);
        System.out.println(username);
        crit.add(Restrictions.eq("username", username));
        crit.setMaxResults(1);
        List < User > users = crit.list();
        System.out.println(users);
        if (users.size() < 1) {
            throw new DataNotFoundException();
        }
        return users.get(0);
    }
}

父类:

package com.walladverts.util;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public abstract class CustomHibernateDaoSupport extends HibernateDaoSupport {@
    Autowired
    public void init(SessionFactory factory) {
        setSessionFactory(factory);
    }
}

有人知道为什么会发生这种情况吗?它卡住了我的开发。

编辑:

当 Spring Secure 尝试登录用户时会发生这种情况。当从 Controller 调用此方法时,我的 SessionFactory 工作正常。

最佳答案

public abstract class CustomHibernateDaoSupport extends HibernateDaoSupport {
    @Autowired
    @Qualifier("sessionFactory")
    private SessionFactory sessionFactory;

    public Session getSession() {
        return sessionFactory.getCurrentSession();
    }
}
<小时/>
public User findByUsername(String username) throws DataNotFoundException {
     Session session = getSession();
     // do sth
}

关于java - Hibernate、Spring、Dao getSession() NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16064707/

相关文章:

java - 是否可以在单个端口上运行两个 NIO 服务器套接字?

java - addView 添加 View 但没有显示它

java - 从使用其他 xsd 的 xsd 以编程方式生成 xml

java - 在偏好中存储音乐ON/OFF状态-LibGdx

spring - 在 Spring Boot 中使用自定义 token 进行身份验证

spring - 如何在spring boot mvc中执行请求之前修改Http headers

java - 在 spring-data 中为 MongoDB 配置 GridFS 模板

java - JSP页面显示数据时出现java.lang.NumberFormatException

java - JPA 2.1/Hibernate 5.0 生成模式忽略 inverseJoinColumn 中的 foreignKey 名称

java - Hibernate 自动值(value)生成策略之间的区别?