在我的应用程序中,我需要对设备数据库进行高级搜索,所以我在我的服务接口中创建了这个函数:
public List<Equipement> findByCriterias(SearchEquipement searchEquipement) ;
我认为实现这个功能的最好方法是,因为我正在使用 Spring MVC 和 Hibernate,所以在我的 DAO 接口中添加一个函数:
public List<Equipement> getByCriteria(org.hibernate.Criteria criteria) ;
为了完成她的任务,该findByCriterias
方法需要将 转换searchEquipement
为 a 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