Hibernate 中带有连接表的分页

2024-01-11

对此有很多疑问,但我找不到具体的答案。 我是 Hibernate 新手,正在尝试实现分页。 假设我有两个实体:Parent 和 Child,定义如下:

@Entity
@Table(name="Parents")
public class Parent{

   @Id
   @Column(name="id", length=255)
   private String id;

   @Column(name="name", length=255)
   protected String name;

   @OneToMany
   @JoinTable(name="parents_children", joinColumns = @JoinColumn( name="parent_id"), inverseJoinColumns = @JoinColumn( name="child_id"))
   @LazyCollection(LazyCollectionOption.FALSE)
   protected List<Child> children;
}

@Entity
@Table(name="children")
public class Child {

   @Id
   @Column(name="id", length=255)
   protected String id;

   @Column(name="name", length=255)
   protected String name;


  }

每个属性还根据需要具有 getter 和 setter。

我想要得到第一页 of Parents 按名称排序, where 每页有 10 个结果.

所以我从:

    Session session = HibernateUtil.getSessionFactory().openSession();
    Criteria c = session.createCriteria(Parent.class, "p");
    c.createAlias("q.children", "ch"); 
    c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    c.addOrder(Order.desc("name"));
    c.setMaxResults(10);
    c.setFirstResult(0);
    List<Parent> result = c.list();
    session.close();

此代码无法按预期工作,因为 setMaxResults 是在联接表上执行的,而不是在父列表上执行的(正如我希望的那样)。

我的问题是应该使用什么查询来在“父级”列表上而不是在连接表上进行分页?


分页不适用于连接集合,因为它会计算满足条件的所有行where谓词(Hibernate 与此无关,这是数据库的工作方式,例如Oracle rownum http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html).

克服这个问题的通常方法是使用子查询,这样rownum(或所使用的数据库中的等效项)仅应用于一个表(或处于一对一关系的连接表)的选定行。

In HQL:

select p from Parent p were p in (select c.parent from Child c where ...)

The 等效标准 https://stackoverflow.com/questions/5902898/hibernate-criteria-api-subqueries可以用类似的方式构建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 中带有连接表的分页 的相关文章

  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 递归取消 allOf CompletableFuture

    如果我有 CompletableFuture
  • 在 Eclipse 中删除空块之前的新行

    我更喜欢奥尔曼式 http en wikipedia org wiki Brace style Allman style大括号 例如 if foo magical prancing unicorn stuff 而不是 if foo unma
  • 始终将双精度舍入

    我怎么总是能把一个double to an int 并且永远不要将其四舍五入 我知道Math round double 但我希望它始终向上舍入 所以如果是的话3 2 四舍五入为 4 您可以使用Math ceil method 请参阅Java
  • 如何在 JmsMessagingTemplate.sendAndReceive 上设置等待超时

    我在 MVC 控制器中使用 JmsMessagingTemplate 的 sendAndReceive 但如果没有发送回复消息 它似乎会永远等待回复 该文档指出 返回 回复 如果无法接收消息 例如由于超时 则可能为 null 然而 我只是不
  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • 为 REST API 生成 Swagger UI 文档

    我使用 Java 中的 JAX RS Jersey 开发了 REST API 我想为其转换 生成基于 Swagger 的 UI 文档 谁能以简单的方式告诉我如何做到这一点的精确 步骤 很抱歉 他们网站上给出的步骤对我来说有点模糊 有多种方法
  • Spring Security 角色层次结构不适用于 Thymeleaf sec:authorize

    我正在使用 Spring Security 3 2 5 RELEASE 和 ThymeLeaf 2 1 4 RELEASE 我已经在安全上下文中定义了角色层次结构 在我的视图层中我正在使用sec authorize属性来定义菜单项 我希望看
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • 在 Kotlin 中声明静态属性?

    My Java code public class Common public static ModelPengguna currentModelPengguna public class Common companion object v
  • 如何更改 JAX-WS Web 服务的地址位置

    我们目前已经公开了具有以下 URL 的 JAX RPC Web 服务 http xx xx xx xx myservice MYGatewaySoapHttpPort wsdl http xx xx xx xx myservice MYGa
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • 在 directx 11 中一次渲染到多个纹理

    我正在尝试使用 C directx 11 SDK 一次渲染到两个纹理 我希望一个纹理包含结果图像的每个像素的颜色 渲染 3D 场景时我通常在屏幕上看到的颜色 另一个纹理包含每个像素的法线和深度 3 个浮点表示法线 1 个浮点表示法线 为深度
  • PHP中计算cron下次运行时间

    我正在我自己的个人框架中设计一个任务调度程序 并试图避免不那么灵活的 运行每个n分钟 小时 天 的方法会更容易实现 我想做的是模仿 cron 调度 我有适当的函数来分割模式并计算下一个日期 一个月中的某一天 的下一个值 目前 但如果有比我正
  • 如何在多线程应用程序中使用Hibernate?

    我正在尝试将 Hibernate 用于多线程应用程序 其中每个线程检索一个对象并尝试将其插入表中 我的代码如下所示 我每个线程都有本地休眠会话对象 并且在每个 InsertData 中我执行 beginTransaction 和提交 我面临
  • 如何将复选框绑定到 mvc3 中的视图模型

    我真的很难理解这个问题 我有一个 UserModel 和一个 UserRoleModel public class UserModel Required Display Name User name public string UserNa
  • 从 R Shiny renderTable 中排除行名称

    我正在使用 R Shiny 包中的 renderTable 函数 它返回一个包含行名称的表 理想情况下 我希望显示一个仅包含两列的表格 一列代表 月份 一列代表 值 我当前获得的输出包括行名称 我尝试了一些方法来排除行名称 但没有成功 有什
  • 如何告诉 clang 我的 LLVM 目标应该使用 16 位“int”?

    对于我的 PIC 后端 我希望 int 为 16 位 我 我的目标如何告诉 clang int 的大小应该是多少 仅定义 16 位寄存器似乎还不够 目前 clang O2 emit llvm target pic 转换 int foo in
  • 选项标签中的 html 标签

    看来 html 标签无法插入选项标签中 说
  • Hibernate SchemaFilterProvider获取Java实体名称

    我希望 Hibernate 禁用某些类在启动时进行验证 我的具体用例 spring jpa hibernate ddl auto validate Table name SAME TABLE public class Entity1 Col
  • OpenCV 2.1 托管 C++ (CLI/C++) 中的 cvSetMouseCallback

    我的类名称是 HandMotionRecognition 我在鼠标回调中调用 getColorPixel 方法 这是使用 Visual Studio 2010 的 OpenCV 项目类型是 c gt cli 处理鼠标事件的标准代码 除非我弄
  • 从 IBAction 以编程方式设置 UISwitch isOn 再次调用 IBAction

    我刚刚注意到设置 UISwitchisOn在其 IBAction 中会导致再次调用 IBAction 所以下面的代码 class ViewController UIViewController var count 0 IBOutlet we
  • 是否可以有一个从释放存储操作到不同线程中的存储的释放序列?

    我知道线程 2 中的释放存储操作和线程 1 中的获取加载操作之间会出现同步关系 即使该加载操作不直接读取线程 2 存储的值 前提是有一个释放存储操作和实际读取的存储之间的 释放顺序 只要 实际读取的存储与释放存储操作位于同一线程中 在修改顺
  • 在 Powershell 中运行 Start-Website 命令时出现“无法创建文件”错误

    目前我正在尝试运行这个 powershell 脚本 Param websiteName physicalPath import module WebAdministration website get website where objec
  • 在运行时清除日志文件:被另一个进程错误使用

    我在我的应用程序中使用 Serilog 框架 在我的应用程序中 当日志文件大小达到 2MB 时 我通过将现有文件从 file log 重命名为 file log bak 并创建新的 file log 来创建日志文件的备份 在运行时 我在读取
  • 如何检测 React Native 应用程序何时关闭(而不是暂停)?

    我到处都找过 但找不到这个问题的答案 我如何检测用户何时尝试关闭我的 React Native 应用程序 如进程正在运行 并且他们手动管理其应用程序并强制退出它 我想在发生这种情况时添加注销功能 但是找不到检测它的方法 AppState似乎
  • SQLCipher 与 DBFlow

    我曾经使用过 DBFlow 它在数据库方面非常简单 但我想问是否有一个很好的例子来将 SQLCipher 与 DBFlow 一起使用 我已点击此链接寻求帮助 Raizlabs DBFlow https github com Raizlabs
  • Python Pandas 按小时对日期时间进行分组并计算行数

    这是我的交易数据框 其中每一行表示一个交易 date station 30 10 2017 15 20 A 30 10 2017 15 45 A 31 10 2017 07 10 A 31 10 2017 07 25 B 31 10 201
  • 访问类中的变量

    我想访问一个类中的变量 而不是作为类的实例 例如 class myclas private list array 1 2 3 我需要以这种方式访问 list 的值 myclass list 不可能 还有其他方法吗 谢谢 编辑 谢谢大家的回答
  • 垃圾收集运行时成本的大O分析

    当推理垃圾收集语言中的运行时成本时 诸如以下语句的成本是多少 myList null 用 n 列表中的元素数量 表示 为了便于论证 请将该列表视为引用类型的单链表 无需终结 更一般地说 我正在寻找有关如何使用 GC 语言分析运行时成本的任何
  • Java Eclipse 插件开发 - 以编程方式保存所有项目文件

    我正在为 Eclipse 开发一个插件 我希望它建议用户在运行之前保存未保存的资源 这与 eclipse 建议您在调试之前保存未保存的文件的行为类似 本质上 我想打开以下对话框 任何帮助将不胜感激 如果您在该对话框上按 alt shift
  • Hibernate 中带有连接表的分页

    对此有很多疑问 但我找不到具体的答案 我是 Hibernate 新手 正在尝试实现分页 假设我有两个实体 Parent 和 Child 定义如下 Entity Table name Parents public class Parent I