【问题标题】:Play Framework - Pagination using JPAPlay Framework - 使用 JPA 进行分页
【发布时间】:2011-09-26 14:44:42
【问题描述】:

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

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

我们知道,from() 和 fetch() 只对 JPAQueryobject 起作用,上面的代码将生成 List 而不是 JPAQueryobject。

请注意,queryStr 结合了 2 个不同的模型。

是否可以从上述查询中获取 JPAQueryobject?这样我就可以使用 from 和 fetch。

【问题讨论】:

    标签: java jpa playframework


    【解决方案1】:

    您能否对“无效”部分更准确一点?你有什么错误,或者类似的东西吗?

    在我的应用程序中,我实现了一些分页功能,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();
    

    【讨论】:

    • 非常感谢您的回答。我已经编辑了这个问题,现在更清楚了。
    • @Siva 我编辑了我的帖子,为您提供另一个代码示例,它更接近您的建议。我想这就是你要找的……
    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多