有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 2 楼答案

    背后的士气是fetchResults从一开始就无法正常工作(在某些情况下),并且无法仅使用JPQL(JPA的查询语言)允许的语法来正确实现它

    如果fetchResults以前为您工作过,您可以继续使用它。但是,只有在实际需要总数时才这样做。因为fetchResults是一个误导性的名称,用户通常只需要fetch(),这显然是首选,因为它没有fetchResults的缺陷

    虽然fetchResults将在相当长的时间内保持可用(尽管JPA不鼓励使用它),但您很可能最终会遇到fetchResults不起作用的情况。如果您确实需要正确的分页(这也适用于聚合查询),我建议使用Querydsl integration for Blaze-Persistence,它具有高级分页功能:

    public PagedList<Employee> Employees(int firstResult, int maxResults) {
        return new BlazeJPAQuery(entityManager, criteriaBuilderFactory).from(employee)
            .orderBy(employee.id.asc())
            .select(employee)
            .fetchPage(firstResult, maxResults);
    }
    

    使用这种高级分页,它还可以正确地实现fetchResults(),因此旧代码可以正常工作