mysql - 如何为 JPA View 实体传递动态限制值?
问题描述
我在 MySQL 中创建了一个视图,我在 JPA 中使用该视图作为实体,
@Entity
@Immutable
@Table(name = "my_view")
现在我面临的问题是我试图通过在查询对象中设置 setMaxResults 来进行分页,在后端发生的事情是视图没有限制,因此它试图获取所有记录,然后应用setMaxResults,这正在扼杀我本可以编写本机查询的性能,但它有点混乱。
生成的查询将如下所示
select e from myViewEntity where 1=1 and (adding addition constraints as parameter)
我的问题有什么办法可以将 Limit 作为动态值传递给视图?
注意:我通过使用别名将约束传递给视图。
解决方案
您可以通过动态传递 firstResult 和 maxResults 的值在查询中使用setFirstResult
和方法,如下所示。setMaxResults
List<User> users = entityManager().createQuery("SELECT o FROM User o", User.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
推荐阅读
- php - 显示 ASCII 字符的页面标题
- network-programming - 我们有 IOS 应用程序应该在应用程序商店中发布,应用程序使用 swift 进行有线通信
- function - 在 Flutter 中以函数作为参数调用小部件
- javascript - React 用户体验的屏幕录像
- javascript - NPM 链接 React 包时重复的 React 实例。无效的挂钩调用
- android - 如何拥有两个独立的 Android Studio 实例?
- sql - 如何在 BigQuery 中以前导零轻松获取年份和月份?
- reactjs - 如何在 React TS 中更改使用 jimdo/ui 的项目
- vue.js - Vue 组合 API 不起作用,未使用从数据库中提取的数据设置数据
- java - MethodArgumentTypeMismatchException - 自定义错误消息?