首页 > 解决方案 > Spring Data 项目中 Spring ORM 的 Session Factory

问题描述

我有一个项目,他的 DAO 类扩展了 HibernateDaoSupport,如下所示:

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


public class SomeThingDAOImpl extends HibernateDaoSupport implements SomeThingDAO{

//methods here

}

现在,由于某些原因,我已经对该项目进行了升级,以使用 spring-boot 并且我正在使用 spring-data-jpa。但问题是,DAO 类不在 Spring Application 上下文中,并且发生了一个异常,如下所示:

调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

会话工厂是在您使用 spring 数据实现 JpaRepository 接口时自动设置的,但我不能这样做,因为项目需要 HibernateDaoSupport 的东西,比如 getSession().createSQLQuery 和其他东西。

以下是我已经通过这些例外处理的一些事情:

  1. 我已经将@Repository 插入到该类中,变成了一个spring bean,并被应用程序上下文扫描。不工作;

问题是:如何在没有异常的情况下启动我的应用程序并启动会话工厂?

编辑 1:以下是代码的其他部分:

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


public class SomeThingDAOImpl extends HibernateDaoSupport implements SomeThingDAO{



private static final String SQL_SELECT =
            "select ............";



@Override
    public User user(String name, String adress) {
        User result = new User();
        result.setName(name);
        result.setAdress(adress);
        SQLQuery query = getSession().createSQLQuery(SQL_SELECT)
                .addScalar("name", Hibernate.INTEGER)
                .addScalar("adress", Hibernate.STRING)         
        query.setString("name", name);
        query.setString("adress", adress);


return result;


}

标签: javaspringspring-boothibernatespring-data-jpa

解决方案


经过一些研究,无法找到明确的解决方案,但我已经对项目进行了一些更改,现在一切都在工作。

我已经添加了 @ImportResource({"classpath:applicationContext.xml"}) 注释,现在我有两个上下文配置文件。


推荐阅读