我用的是JPA2.出于安全考虑,我使用CriteriaQuery实现类型安全(因此,我不会搜索任何类型查询的解决方案等等).

我最近遇到一个问题,我需要设置一个SQL限制.

经过多次搜索,我仍然没有找到解决方案.

CriteriaQuery<Product> query = getEntityManager().getCriteriaBuilder().createQuery(Product.class);
Root<Product> product = query.from(Product.class);
query.select(product);

return em.createQuery(query).getResultList();

有人能帮我吗?

推荐答案

Query上定义limitoffset:

return em.createQuery(query)
         .setFirstResult(offset) // offset
         .setMaxResults(limit) // limit
         .getResultList();

从文件中:

TypedQuery setFirstResult(int startPosition)

设置要检索的第一个结果的位置.参数:

TypedQuery setMaxResults(int maxResult)

设置要检索的最大结果数.

Sql相关问答推荐

将SEMI JOIN、ANTI JOIN转换为非连接SQL

基于多个字段删除Access中的重复记录,同时保留最低优先级

Oracle SQL-将结果列在单行中

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

如何利用单列历史SQLsnowflake获得合并结果

如何在PostgreSQL中的一列中添加两个文本?

按分隔符和总和分析字符串

我怎样才能得到列值对应的最大值在另一个?

返回找到的最小和最大row_number()spark SQL

Select 非重复值并按条件排除行

在SQL Server中设置关联对象的有效JSON格式

将结果从一列转换为两行或更多

Oracle PL/SQL:解决DBMS输出大小限制的问题

不存在记录的国外关键点

从给定数据中查找下一个工作日期

在 Oracle 21c 中透视文本值

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

如何将 CONCATENATED 值与临时表中的值匹配

SQL Server 分区和 Run Case 语句

如何跨行合并以删除 SQL 中的空值?