java - session.getCurrentSession().createCriteria(MyClass.class) 已弃用如何使用 .addOrder() 现在

标签 java hibernate sql-order-by deprecated createcriteria

我一直在开发:

public List<DepartmentType> getAllDepartmentTypes() {
    return session.getCurrentSession()
                .createCriteria(DepartmentType.class)
                .addOrder(Order.asc("department_type_name"))
                .list();
}

地点:

@Autowired
SessionFactory session;

来自this Question关于 createCriteria() 的替代方案,我创建了一个获取列表的方法:

public List<DepartmentType> getAllDepartmentTypes() {
    CriteriaBuilder builder = session.getCurrentSession().getCriteriaBuilder();
    CriteriaQuery<DepartmentType> criteriaQuery = builder.createQuery(DepartmentType.class);    
    return session.getCurrentSession()
                .createQuery(criteriaQuery)
                .getResultList();
}

但我还是不知道在哪里使用:

addOrder(Order.asc("department_type_name"))

最佳答案

您需要使用CriteriaQuery.orderBy()提供 order by 子句。

public List<DepartmentType> getAllDepartmentTypes() {
    CriteriaBuilder builder = session.getCurrentSession().getCriteriaBuilder();
    CriteriaQuery<DepartmentType> criteriaQuery = builder.createQuery(DepartmentType.class);    
    Root<DepartmentType> deptType = criteriaQuery.from(DepartmentType.class);
    criteriaQuery.select(deptType).orderBy(builder.asc(deptType.get("department_type_name")));
    return session.getCurrentSession()
                .createQuery(criteriaQuery)
                .getResultList();
}

关于java - session.getCurrentSession().createCriteria(MyClass.class) 已弃用如何使用 .addOrder() 现在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615252/

相关文章:

java - 无法打开 JFoenix 窗口

java - 在两个 JList 之间移动选定的数据

java - "Extending"Java 枚举的替代方案

java - 不使用 root 进行映射的 Spring Data REST 示例

java - 在 Hibernate 中同时使用@Column 和@Formula

java - org.springframework.web.multipart.commons.CommonsMultipartFile 无法转换为 java.sql.Blob

java - 如何设置 JPA EntityManager 查询的超时时间

sql - 根据满足多少 WHERE 条件对查询结果进行排名

php - mysql 按第一列中的列排序

mysql 首先执行 mysql order by