假设我们有一个实体User,其中有很多注释。
可以这样做:

List<Comment> = user.getComments();


但这将加载用户的所有评论。
例如,我们应该如何只检索前10个?
是什么类似于:

List<Comment> = user.getComments().setOffset(0).stLimit(10).getResultList();


最佳答案

执行此操作的标准Java方法(而且我很确定JPA提供程序具有支持该功能的功能)是:

List<Comment> = user.getComments().subList(0,10);


参考


List.subList(from, to)




或者,您可以使用极其冗长的JPA 2 CriteriaQuery API:

CriteriaQuery<Comment> cQuery =
        entityManager.getCriteriaBuilder()
                     .createQuery(Comment.class);
cQuery.select(cQuery.from(Customer.class)
                     .get(Customer_.comments));
List<Comment> comments =
        entityManager.createQuery(cQuery)
                     .setFirstResult(0)
                     .setMaxResults(0)
                     .getResultList();

10-08 01:30