1

我有一个具有映射Question对象ListComment对象。@OneToManyQuestion对象具有fetchComments(int offset, int pageSize)获取给定问题的评论的方法。

我想通过一次获取有限数量的评论来对评论进行分页。

如果我写一个Query对象,那么我可以设置记录偏移量和最大记录以使用Query.setFirstResult(int offset)和获取Query.setMaxResults(int numberOfResults)。但我的问题是如何(如果可能的话)无需编写Query带有简单注释或属性的 ie 即可获得相同的结果。更清楚的是,我需要知道是否有类似的东西

@OneToMany(cascade = CascadeType.ALL)
@Paginate(offset = x,maxresult = y)//is this kind of annotation available?
private List<Comment> comments;

我读过@Basic(fetch = FetchType.LAZY)它只加载运行时需要的记录,但我无法控制那里获取的记录数量。我是 JPA 的新手。所以请考虑一下我是否错过了一些非常简单的事情。

4

1 回答 1

3

不,JPA 中没有这样的功能。概念本身也有点混乱。使用您的示例偏移量(以及 maxresult )是编译时间常数,并且不能很好地用于分页目的。通常,实体中的 JPA 注释定义结构,而不是依赖于上下文的结果(为此需要有查询)。

如果在列表中访问实体时获取实体就足够了,并且如果您使用的是 Hibernate,那么您可以获得的最接近的是额外的@LazyCollection

@org.hibernate.annotations.LazyCollection(LazyCollectionOption.EXTRA)
于 2012-07-15T18:16:28.990 回答