以下代码是由Hibernate 3开发的。
public List<Employee> getAllSalaryPersons () {
List<Employee> empSalList= super.getHibernateTemplate().execute(new HibernateCallback<List<Employee>>(){
public List<Employee> doInHibernate(Session session) throws HibernateException {
Criteria criteria = session.createCriteria(Salary.class, "sclass")
.createAlias("salary", "salary")
.add(Restrictions.le("sclass.salary", 25000))
.add(Restrictions.gt("sclass.salary", 99000))
.setProjection(
Projections.projectionList().addOrder( Order.asc("sclass.experiance") );
criteria.setResultTransformer( new AliasToBeanResultTransformer(Employee.class));
return criteria.list();
}
});
return empSalList;
}
我将完全避免使用HibernateTemplate
(其包装名称随着每个主要的Hibernate版本更改(,而是使用SessionFactory
。
这样,当您最终升级到Hibernate 6或7 ...
时,您不必再次更改代码@Autowired
private SessionFactory sessionFactory;
public List<Employee> getAllSalaryPersons () {
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Salary.class, "sclass")
.createAlias("salary", "salary")
.add(Restrictions.le("sclass.salary", 25000))
.add(Restrictions.gt("sclass.salary", 99000))
.setProjection(Projections.projectionList())
.addOrder(Order.asc("sclass.experiance")) ;
criteria.setResultTransformer( new AliasToBeanResultTransformer(Employee.class));
return criteria.list();
}