我正在Spring-5的Maven项目中使用Hibernate 5实现DAO,以借助偏移和maxcount获取列表
 sessionFactory.getCurrentSession().createCriteria()但现在已弃用,我想实施

我希望这三个函数可以用新方法替换createCiteria()

@Override
public List<Department> list(Integer offset, Integer maxResults) {
        return sessionFactory.getCurrentSession()
                .createCriteria(Department.class)
                .setFirstResult(offset!=null?offset:0)
                .setMaxResults(maxResults!=null?maxResults:10)
                .addOrder(Order.asc("department_name"))
                .list();
}




@Override
public Long count() {
    return (Long)session.openSession()
            .createCriteria(Department.class)
            .setProjection(Projections.rowCount())
            .uniqueResult();
}


AND with Restrictions.eq()

@Override
public List<Department> getAllDepartmentsByDepartmentTypeId(int department_type_id) {
    return session.getCurrentSession()
            .createCriteria(Department.class)
            .addOrder(Order.asc("department_name"))
            .add(Restrictions.eq("department_type_id", department_type_id))
            .list();
}


我希望实现这三种方法,以便
我可以使用而不是不推荐使用的createCriteria()方法

最佳答案

改用javax.persistence.criteria.CriteriaBuilder并重新创建查询

builder.createQuery(...)


可以在Examplesall over中找到place

10-08 11:13