Play Framework - 使用JPA进行分页

时间:2011-09-26 14:44:43

标签: java jpa playframework

似乎以下语法不起作用。我们有任何替代查询吗?

JPA.em().createQuery(queryStr).getResultList().from(startAt).fetch(offset);

正如我们所知,from()和fetch()仅适用于JPAQueryobject,上面的代码将生成List而不是JPAQueryobject。

请注意,queryStr结合了两种不同的模型。

无论如何从上面的查询中获取JPAQueryobject?这样我就可以使用from和fetch。

1 个答案:

答案 0 :(得分:8)

你能否更加准确地说“没有工作”部分?你有任何错误,或类似的东西吗?

在我的应用程序中,我实现了一些分页功能,JPA查询的一个示例就是这个(News是我的应用程序的一个模型):

public static void news(int size, int page) {
    // 'size' is the number of elements displayed per page
    // 'page' is the current page index, starting from 1.
    int start = page * size;
    List<News> allNews = News.find("order by date desc").from(start).fetch(size);
    // Once the list of news is found, we return them in Json format...
    renderJSON(allNews, new NewsJsonSerializer());
}

关于您的编辑:方法createQuery返回Query个对象。因此,您可以使用setFirstResult()方法和setMaxResults()代替from()fetch()。应用于您的代码,您的查询现在看起来像:

JPA.em().createQuery(queryStr).setFirstResult(startAt).setMaxResults(offset).getResultList();