当前位置: 首页 > 知识库问答 >
问题:

如何在不编写JPA查询的情况下实现分页?

柳奇思
2023-03-14

我有一个问题对象,其中有ListComment对象与@OneTo很多映射。问题对象有一个finch评论(int偏移量,int pagesize)方法来获取给定问题的评论。

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

如果我写了一个Query对象,那么我就可以通过Query设置要获取的记录偏移量和最大记录数。setFirstResult(int offset)查询。setMaxResults(int numberOfResults)。但我的问题是,如果可能的话,如何在不必编写查询的情况下(即使用简单的注释或属性)获得相同的结果。更清楚的是,我需要知道是否有

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

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


共有1个答案

商曦
2023-03-14

不,在JPA中没有这样的功能。概念本身也有点混乱。在示例中,偏移量(以及最大结果)是编译时间常量,这并不能很好地实现分页目的。一般来说,实体中的JPA注释定义结构,而不是上下文相关的结果(为此需要查询)。

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

@org.hibernate.annotations.LazyCollection(LazyCollectionOption.EXTRA)
 类似资料:
  • 对于上面的查询,我得到了错误

  • 我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。

  • 我在mySql中有一个查询,我想在我的控制器中编写。 原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:应为CLOSE,在org.hibernate.internal.exceptionConverterImpl.convert(exceptionConverterIm

  • 当我按下搜索按钮时,出现以下错误: 发生错误: 异常[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:java。sql。SQLException:索引处缺少IN或OUT参数::1错误代码:17041调用:从CRM_DAILY_SHEET WHERE to_char(报

  • 问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul