调用qs.getSubList()
方法时,出现以下异常。不知道为什么它显示错误,当从其他类调用相同的方法时,它工作得很好,并返回Question
列表。
java.lang.NullPointerException: Cannot invoke "org.hibernate.SessionFactory.openSession()" because "this.sessionFactory" is null
queType.jsp
<%@page import="java.util.List"%>
<%@page import="com.guru.onlineexam.entity.Question"%>
<%@page import="com.guru.onlineexam.service.QuestionService"%>
<%
QuestionService qs = new QuestionService();
List<Question> qList = qs.getSubList();
out.println(qList);
%>
QuestionService.java
@Service
public class QuestionService {
@Autowired
MainDao mainDao;
@Autowired
SessionFactory sessionFactory;
public List<Question> getSubList() {
// Session session = mainDao.getSession();
Session session = sessionFactory.openSession();
String query = "SELECT DISTINCT que_subject FROM Question";
Query q = session.createQuery(query);
List<Question> sublist = q.getResultList();
return sublist;
}
}
它向您显示了错误,因为您使用了自己而不是Spring创建的QuestionService
实例。
要使服务的属性初始化,您需要从Spring上下文中获取实例ftom或将其传递给自动布线工厂。
尽管JSP中的scriptlet是描述的,但您应该在控制器组件中编写这样的内容
QuestionService qs = AppContext.getBean(QuestionService.class);
然后检查sessionFactory
的属性。它不应该是null
。