jlu_lamp_lamp 2016-06-12 08:55 采纳率: 0%
浏览 2447

用spring注入sessionfactory,总是null,请教大家帮我看看是什么问题

用ssh做的一个小东西,写了泛型dao,然后继承了hibernatedaosupport,然而
在方法里面用getHibnerateTemplate()时总是null。
我用main方法测试都是成功注入的,还有在其它地方自己new一个然后传入sessionFactory,输出sessionFactory和getHibneratemTemplate都是有值的,但是进入方法总是null,我试了一天都解决不了。
前提:我的所有包都引入好了,包括互相协调的包,由于太多,我就贴了一些相关的方法代码,请大家帮我看看。

另外,还有没有更好的写法?或者比hibernateDaoSupport更好用的模板,有的话,请指点一下,谢谢

这个是BaseDao
public interface BaseDao {
void save(T entity);
void update(T entity);
List findAll(Class entityClass);


这是BaseDaoImpl
public class BaseDaoImpl
extends HibernateDaoSupport implements BaseDao {

@Override
public void save(T entity) {
    getHibernateTemplate().save(entity); 
}

@Override
public void update(T entity) {
    getHibernateTemplate().update(entity);

@Override
public List findAll(Class entityClass) {
String hql = "from " + entityClass;
System.out.println("template---"+getHibernateTemplate());
System.out.println("hql---"+hql);
System.out.println("sessionFactory---"+super.getSessionFactory());
return (List)getHibernateTemplate().find(hql);
}


这是BaseService
public interface BaseService {
void save(T entity);
void update(T entity);
List findAll(Class entityClass);


这是BaseServiceImpl

public class BaseServiceImpl
implements BaseService {

private BaseDao<T , ID> baseDao;

public void setBaseDao(BaseDao<T , ID> baseDao){
    this.baseDao = baseDao;
}

@Override
public void save(T entity) {
    baseDao.save(entity);
}

@Override
public void update(T entity) {
    baseDao.update(entity);
}

@Override
public List<T> findAll(Class<T> entityClass) {
    return baseDao.findAll(entityClass);
}

这是web.xml

Struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


Struts2
/*


org.springframework.web.context.ContextLoaderListener


contextConfigLocation
classpath:applicationContext.xml


这是applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml">
    </property>
</bean> 

<bean id="baseDaoImpl" class="com.lamp.dao.impl.BaseDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

``` scope="prototype">



这是action的代码
public class ShowAllContactAction extends ActionSupport{
    private List<Contact> resultAllContactList;
    private ContactServiceImpl contactServiceImpl;

    public void setContactServiceImpl(ContactServiceImpl contactServiceImpl){
        this.contactServiceImpl = contactServiceImpl;
    }

    public String execute(){
        resultAllContactList = contactServiceImpl.findAll(Contact.class);
        ActionContext.getContext().put("resultAllContactList" , resultAllContactList);
        return "SUCCESS";
    }
}

这是hibernate配置文件
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>

        <property name="connection.url">jdbc:mysql://localhost:3306/sanke_daily</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="com/lamp/entity/Contact.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

这是struts.xml
<action name="showAllContactAction" class="showAllContactAction">
            <result name="SUCCESS">/jsp/contact/showAllContactSuccess.jsp</result>
        </action>

另外,ContactBaseDao、ContactBaseDaoImpl和ContactService、ContactServiceImpl都没有新加的特别的方法,所以都是空的



  • 写回答

7条回答 默认 最新

  • 关注




    是给BaseDaoImpl中的sessionFactory注入值
    而BaseDaoImpl中的getHibernateTemplate()是获取HibernateDaoSupport 中的 sessionFactory 的值
    所以你获取的为空
    你把上面的换成这个看看,把hibernate换成你的版本,我这个是hibernate3



    我也是新手,你可以试试。

    评论

报告相同问题?

悬赏问题

  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号