【发布时间】:2012-06-12 11:14:25
【问题描述】:
在我的应用程序中,我需要对设备数据库进行高级搜索,所以我在我的服务接口中创建了这个函数:
public List<Equipement> findByCriterias(SearchEquipement searchEquipement) ;
我认为实现此功能的最佳方法是,因为我正在使用 Spring MVC 和 Hibernate,因此向我的 DAO 接口添加一个功能:
public List<Equipement> getByCriteria(org.hibernate.Criteria criteria) ;
为了完成她的任务,findByCriterias 方法需要将 searchEquipement 转换为 org.hibernate.Criteria,所以我决定创建一个 util 类来执行此操作(尚未完成):
public class ApplicationUtil {
private ClassPathXmlApplicationContext context = new
ClassPathXmlApplicationContext("mmapp/util/application-context-util.xml") ;
private SessionFactory sessionFactory ;
public void setSessionFactory(){
sessionFactory = (SessionFactory) context.getBean("sessionFactory") ;
}
public synchronized Criteria changeSearchEquipementToCriteria(SearchEquipementsearchEquipement) {
setSessionFactory() ;
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Equipement.class) ;
return criteria ;
}
}
问题是当我尝试对这部分进行单元测试时,我遇到了很多麻烦。
public class ApplicationUtilUnitTests {
@Test
public void testChangeSearchEquipementToCriteria(){
ApplicationUtil util = new ApplicationUtil() ;
Criteria criteria = util.changeSearchEquipementToCriteria(null) ;
assertNotNull(criteria) ;
}
}
这是在其他几次尝试之后,现在我得到了这个错误:
org.hibernate.HibernateException: No Session found for current thread
【问题讨论】:
标签: spring hibernate unit-testing