【问题标题】:Session Factory of Spring ORM in a Spring Data projectSpring Data 项目中 Spring ORM 的 Session Factory
【发布时间】:2021-01-10 01:37:07
【问题描述】:

我有一个项目,他的 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' 或 'hibernateTemplate' 是必需的

会话工厂,当你使用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;


}

【问题讨论】:

  • 请分享一段重现性更高的代码,可以帮助我们更好地理解并帮助您。
  • 使用 Spring Data JPA 全力以赴。将所有 SQLQueries 转换为本机查询。
  • 不能这样,这是一个超大的项目

标签: java spring spring-boot hibernate spring-data-jpa


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2012-01-04
    • 2021-01-06
    • 1970-01-01
    • 2020-02-06
    • 2019-07-28
    • 2016-05-31
    • 2019-10-15
    • 2012-10-28
    相关资源
    最近更新 更多