java - 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 和其他东西。
以下是我已经通过这些例外处理的一些事情:
- 我已经将@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;
}
解决方案
经过一些研究,无法找到明确的解决方案,但我已经对项目进行了一些更改,现在一切都在工作。
我已经添加了 @ImportResource({"classpath:applicationContext.xml"}) 注释,现在我有两个上下文配置文件。
推荐阅读
- for-loop - 在通道上迭代时出错“范围内的变量太多”
- c++ - 为什么我会收到此警告?“成员 'x' 未在此构造函数中初始化”
- symfony - Symfony3 在 Doctrine2 中保留嵌入形式(违反完整性约束:空字段)
- java - 文本文件中没有可用的内容 Google Drive API v3 Java
- c# - 无法从占位符文本框更新数据库表
- java - 获取文件中两个字符之间的所有子字符串
- iot - 树莓派 2 支持 thingsboard 物联网平台吗?
- java - 如果使用 DataProvider,如何在 TestNG 可发送电子邮件的报告中提供自定义方法名称
- javascript - 使用 js 创建书签
- recursion - 有没有办法在 Kotlin 内部调用匿名函数?