私のアプリケーションでは、機器データベースに対して高度な検索を行う必要があるため、サービスインターフェイスで次の関数を作成しました。
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