【发布时间】:2013-11-14 06:31:38
【问题描述】:
我正在使用 Spring Hibernate 开发一个 Web 应用程序。在那里,我在 DAO 类中有一个方法。
当我通过 jsp 文件调用它时,它运行良好。但是当我通过 servlet 调用它时,它会给出一个NullPointerException。下面我放方法。
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
public List<Employee> listEmployees() {
Session session = sessionFactory.openSession();//line 95
Criteria crit= session.createCriteria(Employee.class);
crit.add(Restrictions.eq("EmployeeId",2 ));
List<Employee> employeelist= crit.list();
session.close();
return employeelist;
}
下面是我的称呼。
public void getConfirm(HttpServletRequest request, HttpServletResponse response) {
Logger.getLogger(this.getClass()).warning("Inside Confirm Servlet");
response.setContentType("text/html");
// do some works
EmployeeDao employeeDao=new EmployeeDao();
employeeDao.listEmployees(); //line 55
}
这是我的 sessionFactory 配置
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>abc.model.Employee</value>
</list>
</property>
<property name="hibernateProperties" >
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
</bean>
这是错误
SEVERE: Servlet.service() for servlet [ConfirmServlet] in context with path[/Spring3Hibernate] threw exception
java.lang.NullPointerException
at abc.dao.EmployeeDao.listEmployees(EmployeeDao.java:95)
at abc.mail.ConfirmServlet.getConfirm(ConfirmServlet.java:55)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
您能告诉我如何解决这个问题,因为我想通过 servlet 调用它。
【问题讨论】:
-
异常状态
sessionFactory引用null,正如它所期望的SessionFactory对象。检查您的sessionFactory对象初始化。 -
你如何定义
sessionFactory? -
你能把你的 sessionFactory 配置和注入代码分享给 EmployeeDaoImpl 类吗?
-
您正在构建您自己的 dao 实例(不由 spring 管理),并期望 spring 神奇地注入依赖项。自动装配依赖关系,如果不可能,请使用应用程序上下文来检索 spring 配置的实例。也使用
getCurrentSession而不是openSession并通过应用正确的声明性事务管理来管理您的会话。
标签: java spring hibernate servlets