假设我们有一个实体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();