将sql查询转换为jpa

2023-12-02

我有一个疑问

SELECT d.name, count(e.id) FROM department d LEFT OUTER JOIN employee e on e.department_id = d.id and e.salary > 5000

以及我如何将其转换为 jpa 现在我有:

CriteriaQuery<Object[]> criteria = builder.createQuery(Object[].class); 
Root<Department> root = criteria.from(Department.class);
Path<String> name = root.get("name");
Expression<Long> empCount = builder.count(root.get("employees").get("id"));
criteria.multiselect(name,empCount);
TypedQuery<Object[]> query = em.createQuery(criteria);

我通过删除排序和分组来简化这两个示例 谁能告诉我如何修改 jpa 代码以获得与 sql 查询相同的结果

提前致谢


你离结果不远了。问题是,据我所知,你不能添加任何限制on子句,使用 JPA。所以查询必须重写为

SELECT d.name, count(e.id) FROM department d 
LEFT OUTER JOIN employee e on e.department_id = d.id 
where (e.id is null or e.salary > 5000)

这是未测试的查询的等效项):

CriteriaQuery<Object[]> criteria = builder.createQuery(Object[].class); 
Root<Department> root = criteria.from(Department.class);
Path<String> name = root.get("name");

Join<Department, Employee> employee = root.join("employees", JoinType.LEFT);

Expression<Long> empCount = builder.count(employee.get("id"));
criteria.multiselect(name,empCount);
criteria.where(builder.or(builder.isNull(employee.get("id")),
                          builder.gt(employee.get("salary"), 5000)));

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

将sql查询转换为jpa 的相关文章

随机推荐

  • 集合视图,具有自定义布局,单元格在滚动时行为异常

    我正在尝试使用 UICollectionView 创建自定义平铺布局 一旦我运行我的应用程序 它就会在模拟器中完美呈现 但是当我滚动视图并将其带回时 所有单元格的框架都会发生变化 并且单元格会重叠 随机留下空格 过去两天我无法解决这个问题
  • 如何在“CollectionEditor”对话框中启用属性的默认值

    请先阅读整个问题以理解where我将能够重置属性的默认值 当定义一个可以可视化设计的自定义类时 可以实现一个集合编辑器来修改列表 数组 集合等属性 使用以下模式 Editor typeof CollectionEditor typeof U
  • 使用 Microsoft Jet OLEDB 的 CSV 列限制

    我正在从包含大约 350 列的 CSV 导入数据 这个 CSV 导入是固定的 我完全无法控制它 如果我尝试在 Excel 2003 中打开 CSV 由于列限制为 255 IV 它只能部分加载 当我使用 OleDb 和 Microsoft J
  • Python 挑战字符串编码

    我有以下提供者列表 俄语 providers u u041e u041e u041e u041a u0432 u0430 u0440 u0442 u0430 u043b u041b u0435 u043e u043f u043e u043b
  • 如何在 Spring.NET 中配置静态类的属性?

    如何通过 Spring NET 配置静态类 考虑下面的类 static class Abc public Interface xyz get set public void Show xyz show 也许解决方法可以帮助 这不是一个静态类
  • OpenCV imwrite 函数导致“未定义符号”

    我正在开发一个软件 它由一些带有 python 绑定的核心 C 代码组成 C 代码已经使用了大量 OpenCV 但现在我试图在两者之间保存图像 但我似乎无法使用imwrite功能 将其添加到 main cpp 中并使用 默认 构建在 ecl
  • 如何使用表单名称作为字符串创建新的表单实例

    使用表单名称创建封闭表单的新表单实例的代码 我想用变量替换长的选择案例列表 模块完整代码 在 Access 2010 中 我有一个 VBA 函数 当给定包含表单名称的字符串时 该函数会打开表单的新实例 通过将表单变量 frm 添加到集合中
  • 图片在浏览器中显示为垃圾字符

    谁能告诉我为什么当我尝试通过浏览器访问图像 URL 时 它显示一堆内容类型为文本 纯文本的垃圾字符 eg https www domainname com client image name jpg显示如下 3 1AQa q2 B R b3
  • 如何使用 php 将文件添加到 ziparchive 中新创建的文件夹中?

    如上图所示 我有组织在虚拟文件夹中的图像 在 mysql 数据库中 但不是真实文件夹中 我需要使所选文件夹可供使用下载为 zip 文件 我能够压缩图像 但是我们如何添加子目录以便向其中添加图像 我尝试使用addEmptyDir 但无法找到向
  • 当条码扫描仪发送以换行符结尾的数据时如何使按钮散焦

    我正在编写一个 C 条形码应用程序 我有一个 EAN 13 正则表达式来检测 Form1 KeyPress 函数中的条形码 我没有机制来检测输入来自哪里 这是我的问题 我的表单中有一个重置按钮 可以清除 dataGridView 中列出的所
  • 无法全局安装旧版本的 phpunit phar

    正如给出的https phpunit de manual current en installation html installation phar verification 全局安装PHAR的步骤是 wget https phar ph
  • DLIB:针对 194 个地标训练 Shape_predictor(helen 数据集)

    我正在训练DLIB s 形状预测器对于 194 个面部特征点 使用海伦数据集用于通过以下方式检测人脸特征点face landmark detection ex cppdlib 库 现在它给了我一个sp dat大约的二进制文件45 MB与给定
  • Live Sass 编译器 - @use 导致编译错误

    我在用着Live Sass 编译器 v3 0 0在我的 VS Code 中 每当我使用 use rule从另一个文件导入变量 但是 当我使用 Sass 命令行界面时 sass watch 编译我的文件 它会抛出没有错误 因此 我想问一下这是
  • macOS DriverKit:制作 PCI dext 来替换内置驱动程序

    我正在尝试在 DriverKit 中编写一个用户空间 PCI 驱动程序 用于教育 研究目的 我找到了一个来自 WorthDoingBadly 的示例其中包含 PCI 设备 dext 的样板代码 我已删除了漏洞利用代码 我已将其修改为通过以下
  • 检测 IE 中包含 PDF 的 iFrame 的 onload 事件

    我发现这个问题已经在这里被问过很多次了 有些解决方案部分有效 这就是场景 我需要加载一个包含 pdf 的 iframe 有可能找不到 PDF 我将在 iFrame 中显示错误页面 加载 iframe 后 我会查找标签使用 iframe co
  • 我如何在不使用 virtual 关键字的情况下重写这个 C++ 继承的成员函数?

    我有一个小程序来演示简单的继承 我正在定义一个派生自哺乳动物的 Dog 类 这两个类共享一个名为 ToString 的简单成员函数 当我不使用 virtual 关键字时 Dog 如何覆盖 Mammal 类中的实现 我是否需要使用 virtu
  • Android:修改录制的视频质量

    我正在使用 MediaRecorder 录制视频 假设视频的大小保持不变 我不清楚应该使用哪些参数来改变图像的质量 例如 我想始终创建 640x480 mp4 视频 我可以调整哪些参数来提高或降低质量 您可以尝试使用 recorder se
  • 自 ubuntu 升级以来未定义对“dlopen”的引用

    自从我升级到 ubuntu 13 10 和 gcc 4 8 1 以来 我遇到了对 dlopen 问题的未定义引用 makefile 已经工作多年了 特定的调用是 gcc rdynamic o ov dbutil ov dbutil o li
  • 离子闪屏和旋转器

    有没有办法在启动屏幕中自定义微调器 目前我正在使用 cordova flashscreen 插件 我想更改出现在启动屏幕上的微调器的颜色 In platforms android src org apache cordova splashs
  • 将sql查询转换为jpa

    我有一个疑问 SELECT d name count e id FROM department d LEFT OUTER JOIN employee e on e department id d id and e salary gt 500