日期:2014-05-19  浏览次数:20717 次

SSH中this.getHibernateTemplate()提示空指针异常
applicationContext.xml 配置如下:

<!-- dataSource config -->
<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/hcschool?useUnicode=true&amp;characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>

<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>

<bean id="baseDao" class="com.hcschool.basedao.impl.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="userDao" class="com.hcschool.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="entityClass" value="com.hcschool.vo.User"></property>
</bean>
<bean id="userServiceImpl" class="com.hcschool.service.impl.UserServiceImpl"
init-method="initialize">
<property name="userDao" ref="userDao"></property>
</bean>

BaseDaoImpl.java 文件如下
public class BaseDaoImpl<T extends Serializable> extends HibernateDaoSupport
implements IBaseDao<T> {

private static final Log log = LogFactory.getLog(BaseDaoImpl.class);

private Class<T> entityClass;

public BaseDaoImpl() {
}

public BaseDaoImpl(Class<T> entityClass) {
this.entityClass = entityClass;

}

public Class<T> getEntityClass() {
return this.entityClass;
};

public void setEntityClass(Class<T> entityClass) {
this.entityClass = entityClass;
};

public void create(T t) throws DataAccessException {
this.getHibernateTemplate().save(t);
}

我想问一下``为什么this.getHibernateTemplate().save(t);会报空指针

------解决方案--------------------
通过你的描述,应该是在Hibernate代理的时候出的问题,检查你的SESSION和代理类的配置文件!
你的基础代理类有了,但是你没有应用它……
------解决方案--------------------
spring注入了之后
是不是还需要在类里面添加
sessionFaction以及对应的setget方法来着啊?
忘记了呵呵

你可以自己调试下 为什么是空指针 的问题
空指针是程序员的自己的问题

祝你成功
------解决方案--------------------
你检查下是不是this.getHibernateTemplate()为空