如何实现dao以获得不带createCriteria()的列表以及具有以下属性的列表?

时间:2019-02-15 19:25:47

标签: java spring hibernate deprecated createcriteria

我正在Spring-5的Maven项目中使用Hibernate 5实现DAO,以借助以下命令获取具有offset和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();
}

AND

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

并带有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()方法

1 个答案:

答案 0 :(得分:1)

改为使用javax.persistence.criteria.CriteriaBuilder并使用

重新创建查询
builder.createQuery(...)

Examples可以在all over place中找到。