【发布时间】: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和其他东西。
以下是我已经通过该异常处理的一些内容:
- 我已将@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