这两天在做下学籍管理系统,由于hibernate是之前学的,所以这次开发没意识到hibernate3跟hibernate4版本更换的一些变动。
就照搬之前学hibernate3的代码来用,尽管知道该项目使用hibernate4,但却忽视了两者间发生了变动。导致出现了一些问题。
以下对出现的问题做一下记录,记录那时用hibernate3用在hibernate4的小错误。
一、出现了
org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;这个问题,上网一查,原来是
到hibernate4的时候,spring已经不再提供hibernateDaoSupport.getTemplate也不支持了.
就用hibernate4的session就可以了。
我把内容修改为了
直接使用注入的sessionFactory.openSession();来取得session.发现可行...
hibernate3时的代码
public List<Course> findAll() {
DetachedCriteria dc = org.hibernate.criterion.DetachedCriteria.forClass(Student.class);
return this.getHibernateTemplate().findByCriteria(dc);
}
后来改成:
public List<Student> findAll() {
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(Student.class);
List<Student> list = (List<Student>) criteria.list();
return list;
}