In my application I need to make advanced search against an equipements database, so i created this function in my service interface:
public List<Equipement> findByCriterias(SearchEquipement searchEquipement) ;
I thought that the best way to implement this function is, since I'm working with Spring MVC and Hibernate, to add a function to my DAO interface:
public List<Equipement> getByCriteria(org.hibernate.Criteria criteria) ;
in order to accomplish her mission the findByCriterias
method needs to transform the searchEquipement
to a org.hibernate.Criteria
, so i decided to create an util class to do this (not complete yet) :
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 ;
}
}
the problem is when i tried to unit test this part, i have many troubles.
public class ApplicationUtilUnitTests {
@Test
public void testChangeSearchEquipementToCriteria(){
ApplicationUtil util = new ApplicationUtil() ;
Criteria criteria = util.changeSearchEquipementToCriteria(null) ;
assertNotNull(criteria) ;
}
}
that's after several other tries, now i get this error:
org.hibernate.HibernateException: No Session found for current thread