如何使 CriteriaBuilder 加入自定义“开启”条件?

2024-03-25

我想使用 CriteriaBuilder 在连接 2 个表的位置进行查询。在 MySQL 中,我尝试进行的查询如下所示:

SELECT * FROM order
LEFT JOIN item
ON order.id = item.order_id
AND item.type_id = 1

我想要获取所有订单,如果他们有类型 #1 的商品,我想加入该商品。但是,如果没有找到类型 #1 的商品,我仍然想获取订单。我不知道如何使用 CriteriaBuilder 来实现这一点。我所知道的就是:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Order> cq = cb.createQuery(Order.class);
Root<Order> order = cq.from(Order.class);
Join<Order, Item> item = order.join(Order_.itemList, JoinType.LEFT);
Join<Item, Type> type = order.join(Item_.type, JoinType.LEFT);
cq.select(order);
cq.where(cb.equal(type.get(Type_.id), 1));

这个查询被破坏了,因为它在 MySQL 中产生类似这样的结果:

SELECT * FROM order
LEFT JOIN item
ON order.id = item.order_id
WHERE item.type_id = 1

结果将仅包含类型为 #1 的商品的订单。没有的订单被排除在外。如何使用 CriteriaBuilder 创建像第一个示例中那样的查询?


可以从版本开始2.1 of JPA使用on method Join<Z, X> on(Predicate... restrictions);

具体方法如下:

Root<Order> order = cq.from(Order.class);
Join<Order, Item> item = order.join(Order_.itemList, JoinType.LEFT);
item.on(cb.equal(item.get(Item_.type), 1));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 CriteriaBuilder 加入自定义“开启”条件? 的相关文章

  • 坚持/提交在 Spring JPA JUnit 的测试环境中不起作用

    我正在尝试设置基本的 JPA 插入测试 但数据库中没有保存任何内容 数据库是Postgresql Hibernate 用作持久性提供者 提前谢谢了 Entity public class Currency Id GeneratedValue
  • Hibernate 复合键:外键的列数错误

    我是 Hibernate 和 JPA 的新手 在设置复合键时遇到困难 定义如下 Entity Table name Entity TABLE IdClass EntityPK class public class MyEntity exte
  • JPA 枚举 ORDINAL 与 STRING

    可以使用以下任一方式在 JPA 中定义枚举 Enumerated EnumType ORDINAL or Enumerated EnumType STRING 我想知道这两个定义的优点和缺点是什么 我听说 ORDINAL 在 Eclipse
  • 如何在没有 JoinTables 的 JPA 中创建一对多关系?

    我正在尝试使用以下表结构在 JPA 中创建 OneToMany 关系 CATALOG catalogId PK name PRODUCT productId PK name catalogId FK 我将类定义为 Entity public
  • 使用MongoDB时需要JPA吗?

    我对这两者很困惑 我正在看戏 java框架 它说它使用JPA 我正在考虑使用 Play 第一次在项目中使用 MongoDB 我以前使用过JPA 但当时我用它来写入关系数据库 mysql MongoDB 不是关系数据库 所以如果我想将它与 P
  • 如何在JPA中反映“嵌套集”模型

    很好用嵌套集 http www evanpetersen com item nested sets html对于分层数据 但在这个设计中 如果删除或插入一些数据 您应该始终计算右侧和左侧节点 此外 您没有任何外键 我如何用 JPA 反映这个
  • 无法在 Eclipselink 上合并日期

    我的会话 bean 不会对托管实体执行更新 我已经包含了相关类的代码 当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em merge event 时 实体管理器不会尝试更新实体 并
  • 为什么 JPA/hibernate 不能映射到 MySQL blob 类型?

    我收到以下错误 Caused by org hibernate HibernateException Wrong column type in TestTable for column PAYLOAD Found blob expected
  • JPA 继承无法确定类型

    我有一个简单的 JPA 映射 但我不断得到一个Could not determine type for例外 setter 和 getter 被省略 Entity Inheritance strategy InheritanceType JO
  • 使用 JPA2/Hibernate 保留 java.time.Instant (JDK8)

    JPA 和 Hibernate 目前都不支持 JDK8 中 JSR 310 带来的新日期 时间类 JPAticket https java net jira browse JPA SPEC 63 休眠ticket https hiberna
  • 跨多个表的 JPA 本机查询

    我将以下内容定义为存储库 dispenseRepository 中的本机查询 Query value SELECT p c s d from patient p consult c script s dispense d where p p
  • JPA 2.0 API Maven 工件

    我正在使用 JPA 2 0 我的持久性提供程序是 Hibernate 但是 我只想包含 javax 中的标准 API 但在中心 没有 2 0 工件 我目前正在使用 Hibernate JPA 2 0 工件 但我想使用更标准的东西 这可能吗
  • Spring Boot处理实体继承

    我正在处理这个tutorial http blog netgloo com 2014 12 18 handling entities inheritance with spring data jpa 处理实体继承 我有扩展用户实体的个人和公
  • createNativeQuery 设置参数

    我有以下内容 其中包含 NativeQuery 我需要在其中设置参数 但有些事情是错误的 因为未设置参数 因此查询是 SELECT movieId title genres FROM movies where title like 所以返回
  • Hibernate 和 Spring - 具有从同一父级继承的多个成员的实体会导致 JDBCException、@Transactional 怪异

    这是重写我的另一个问题 https stackoverflow com questions 7800054 spring mvc app hibernate genericjdbcexception 我有一个 Spring WebMVC 应
  • GAE、JPA、XG 事务、实体组过多异常

    我知道 GAE 上的 XG 交易有 5 个实体组的限制 但我认为我在一项交易中仅使用 3 个组 商品 类别 商品类别 但仍然遇到此异常 引起原因 java lang IllegalArgumentException 在单个事务中对太多实体组
  • Spring data Jpa实体不受管理调用刷新时出现异常

    我有一个数据库代码 jar 我在不同的应用程序中使用它来访问数据库 我在用spring data jpa 我需要调用刷新来检查来自其他应用程序的数据库行的更改 这里我如何实现它 我的StudentRepository界面 public in
  • Postgres UUID 和休眠

    我有一个具有 UUID 列的实体 它不是主键 我正在使用 Postgres 和 hibernate 我对此专栏的类型是https www postgresql org docs 9 1 static datatype uuid html h
  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti
  • @PreUpdate 不适用于 Spring Data JPA

    我有一个实体 Entity EntityListeners MyEntityListener class class MyEntity 还有听者 class MyEntityListener PrePersist PreUpdate pub

随机推荐

  • 如何在微风中全局应用 MaxExpansionDepth 或应用到整个控制器

    我找到了这个答案 MaxExpansionDepth 与最新的 webapi 和微风 https stackoverflow com questions 19668693 maxexpansiondepth with latest weba
  • 在 Rstudio 中使用 knitr 和在命令行中使用 knit2html 时,HTML 输出有所不同

    我正在尝试使用 knit 从 R markdown 文件生成 html 文档 当我在 R studio 中使用 knit html 按钮时 它工作正常 并且得到了我想要的输出 然而 当我在命令行中使用 knit2html 时 输出 html
  • 在 mono/Linux 下从命名管道读取/写入

    我想从 Linux 下的命名管道 FIFo 队列中读取 写入 我已经尝试了标准类 StreamWriter 和 System IO 中的其他类 但它失败了 因为它正在使用查找 有人曾经使用 Mono 从命名管道中写入 读取过吗 我正在设法阅
  • ES6 导入的执行顺序(HTML 和代码)

    如果我有以下情况 我说得对吗 你不能 100 确定three js将被处决AFTER one js and two js 但是 如果我有 我说得对吗 我可以有信心three js将被处决AFTER one js and two js 这个很
  • 不确定如何使用 CICrop 裁剪图像

    我正在尝试使用 CICrop 裁剪图像 但是当我尝试裁剪时 它崩溃并显示以下错误消息 由于未捕获的异常 NSUnknownKeyException 而终止应用程序 原因 setValue forUndefinedKey 这个类 不符合键的键
  • Entity Framework 4 CTP 4 Code First:如何使用非常规的主键和外键名称

    实体框架 4 中是否有方法 如果重要的话使用 CTP4 和 Code First 来更改用于自动识别主键和外键的约定 我尝试将 EF 与旧数据库一起使用 该旧数据库使用 pk fk 前缀而不是 id 后缀来标记键 此外 地址表具有多个外键
  • 无法在docker上安装jenkins的建议插件

    我已经通过docker启动了jenkins 它已经以管理员模式启动 输入密码后 当我选择安装建议的插件时 大部分安装都会失败 发布当我创建 jenkins 用户并导航到 jenkins 主页时 它显示错误 如下面的屏幕截图所示 通过以下命令
  • 某些实体变量的 Spring Security

    是否可以使用 Spring Security 来安全更新某些实体属性 例如 如果我有一个用户实体 我希望 ROLE USER 能够修改 更新用户的所有属性 除了可由 ROLE ADMIN 更新的活动列之外 我还没有找到Spring Secu
  • 相对布局中的百分比宽度

    我正在研究登录的表单布局Activity在我的 Android 应用程序中 下图是我想要的样子 我能够通过以下方式实现此布局XML 问题是 这有点hackish 我必须对主机 EditText 的宽度进行硬编码 具体来说 我必须指定 and
  • 是否有创建 BPMN 的 Java API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法以编程方式创建BPMN 2 0 http en wikipedia org wiki Business Process Mode
  • Symfony2 minify 无需 java 或 node

    我无法访问共享主机上的 java 或 node 有没有办法缩小服务器端 这样我就可以继续使用 assetic 而不需要这些引擎 Uglify 使用node yui compressor 无论如何已弃用 使用java Thanks 似乎有 2
  • 已安装的 gem 列表?

    我可以调用 Ruby 方法来获取已安装 gem 的列表吗 我想解析的输出gem list 有其他方法可以做到这一点吗 这列出了我安装的所有 gem gem query local http guides rubygems org comma
  • 如何使用 Moment.js 将日期验证为指定格式?

    我无法找到有关如何使用 moment js 验证日期输入以确保其格式为 2017 12 31T23 59 59Z 的现有问题 答案 鉴于我有一个日期字符串 2017 12 31T23 59 59Z 如何验证日期字符串严格采用指定的格式 YY
  • 如何使用sidenav的EventEmitter(onClose)

    我想检查一下我的
  • c# SSL TCPServer 卡在 SsLStream.AuthenticateAsServer()

    故事情节 我想用 C 创建我自己的网络服务器 第一次尝试 进展顺利 我正在使用Visual Studio 到代码申请和火狐浏览器检查如果我做得对的话 并且我成功地制作了一个基本的 TCPServer 当我尝试向其添加 SSL 支持时 遇到了
  • Symfony2 多个应用程序和以 api 为中心的应用程序

    我正在尝试做一个以 Symfony2 为中心的应用程序 并重新使用 Web 前端应用程序的所有捆绑包 该应用程序将分为三个API FrontEnd BackEnd 以便我们可以像Service Bundle一样编码API并在整个应用程序中使
  • 如何使用 Dart 和 Shelf 提供动态和静态页面?

    Using shelf static通过 Dart 提供静态网页是没有问题的 var staticHandler createStaticHandler staticPath defaultDocument home html io ser
  • Nodejs 分析:父级(切片字符串)

    我分析了我的 Nodejs 应用程序并看到一些奇怪的字符串 它被标记为父级 切片字符串 我使用 v8 profiler 和 node inspector 这是分析器屏幕的照片 抱歉是照片 不是屏幕截图 只是我的系统真的超载并且没有足够的空间
  • 如何从 PHP 调用 RESTful WCF 服务

    我正在尝试使用 PHP 中的 REST 向自托管 WCF 服务发送请求 我想将对象作为 JSON 对象发送到 WCF 服务 我还没有让它运行 有谁有如何从 PHP 调用服务的示例吗 这是操作合约 方法是POST方法 OperationCon
  • 如何使 CriteriaBuilder 加入自定义“开启”条件?

    我想使用 CriteriaBuilder 在连接 2 个表的位置进行查询 在 MySQL 中 我尝试进行的查询如下所示 SELECT FROM order LEFT JOIN item ON order id item order id A