如何避免 Hibernate 中旧式的外连接 (+)?

2024-01-07

我写了这样的 HQL 查询:

SELECT a FROM A a LEFT JOIN a.b where ...

Hibernate 生成这样的 sql 查询:

SELECT a FROM A a LEFT JOIN a.b where a.b_id = b.id(+)

但是当我写这样的东西时:

SELECT a FROM where a.b.id > 5

它生成 SQL:

SELECT a.* FROM A b cross join B b where b.id > 5

因此,当我结合这些方法时,我收到 Oracle 错误:

SQL Error: 25156, SQLState: 99999
ORA-25156: old style outer join (+) cannot be used with ANSI joins

那么有没有办法告诉 Hibernate 我只想接收一种类型的查询(旧式或新式)?

UPDATE:我所说的组合是指像这样的 HQL 查询:

SELECT alarm FROM Alarm as a LEFT JOIN alarm.madeBy as user where user.name = 'George' and a.source.name = 'UFO'

所以在这里我指定Alarm应该连接到User使用 LEFT JOIN,并且不指定如何连接Alarm with Source,因此 Hibernate 会使用 Cross Join 将其连接起来。

SQL 查询将是这样的:

FROM Alarms a, Users u cross join Sources s where a.user_id = u.user_id(+) and a.source_id = s.source_id and u.name = 'George' and s.name = 'UFO'

为了更多理解,我将添加警报实体的小示例:

@Entity
@Table(name = 'Alarms')
public class Alarm {
   @Id
   private BigDecimial id;

   @ManyToOne
   @JoinColumn(name = "user_id")
   private User madeBy;

   @ManyToOne
   @JoinColumn(name = "source_id")
   private Source source;
}

所以这个问题的解决就是将hibernate的Dialect设置为org.hibernate.dialect.Oracle9Dialect

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

如何避免 Hibernate 中旧式的外连接 (+)? 的相关文章

  • Java 8 可选

    我想检查特定对象大小是否大于 0 如果它大于 0 那么我想创建一个可选对象 如果不是 那么我想返回一个可选的空对象 这是java代码的长版本 if fooA size gt 0 return Optional of new Foo else
  • 将 java 方法参数设置为最终参数

    那有什么区别final在下面的代码之间进行 将参数声明为有什么好处final public String changeTimezone Timestamp stamp Timezone fTz Timezone toTz return pu
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • Jboss EAP 7 - 如何从部署中排除隐式模块(javax.jms)?

    我没想到我会来到这里 但经过大量 Google 和 StackOverflow 搜索后 我来到了这里 这就是我的确切问题 https www linkedin com pulse tale two jars marco antonio al
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 如何在 SpringBoot v3.0.0 中使用嵌入式 MongoDB?

    我正在尝试连接嵌入式 mongodb 并使用 MongoDbSpringIntegrationTest 对其进行测试 问题是相同的代码在 2 7 7 中适用于 spring boot 但在 3 0 0 中不适用于 spring boot 问
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • Java 日期和 MySQL 时间戳时区

    我正在编辑一段代码 其基本功能是 timestamp new Date 然后坚持下去timestamp中的变量TIMESTAMPMySQL 表列 然而 通过调试我看到Date显示在正确时区的对象 GMT 1 当持久化在数据库上时 它是GMT
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • 如何让 Camel FTP 按需只获取一次

    我对骆驼还很陌生 我一直在尝试让 Camel 根据需要仅通过 FTP 获取单个文件一次 我无法让它发挥作用 这是我尝试过的 让我知道什么是最好的方法以及我的代码有什么问题 1 读取文件后发送一条空消息当收到空消息时 停止路由 from di
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • 使用 SimpleDateFormat、Java 进行错误的日期解析

    我需要使用日期模式 yyyy MM dd 解析输入字符串中的日期 如果日期采用任何其他格式 则抛出错误 这是我解析日期的代码 private void validateDate throws MyException Date parsedD
  • 使用替换但不使用根元素的 Jaxb 继承

    我正在浏览布莱斯的博客http blog bdoughan com 2010 11 jaxb and inheritance using substitution html http blog bdoughan com 2010 11 ja
  • 找出对象列表中是否包含具有指定字段值的内容?

    我有一个从数据库收到的 DTO 列表 它们有一个 ID 我想确保我的列表包含具有指定 ID 的对象 显然 在这种情况下创建具有预期字段的对象不会有帮助 因为 contains 调用 Object equals 并且它们不会相等 我想出了这样
  • 优雅地避免 Java 中的 NullPointerException

    考虑这一行 if object getAttribute someAttr equals true 显然这一行是一个潜在的错误 属性可能是null我们会得到一个NullPointerException 因此我们需要将其重构为以下两个选择之一

随机推荐

  • Django 形成动态让作者作为模型表单中的登录用户

    我正在尝试制作一些表单 允许用户添加一些对象 删除它们或编辑 但我一直坚持模型作者之类的内容 假设我们得到了带有场的模型镜头 author models ForeignKey settings AUTH USER MODEL on dele
  • 如何最小起订量索引属性

    我正在尝试模拟对索引属性的调用 IE 我想最小起订量以下 object result myDictionaryCollection SomeKeyValue 还有设置器值 myDictionaryCollection SomeKeyValu
  • 在.NET中编写虚拟打印机[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望创建一个虚拟打印机 将数据传递到我的 NET 应用程序 然后我想创建一个安装程序来安装打印机和
  • 如何在 Weka 中计算聚类评估的准确性

    我们如何使用 Weka 计算集群的准确性 我可以使用这个公式 Accuracy A tp tn Total samples 但我如何知道Weka工具中实验输出的真阳性 假阳性 真阴性和假阴性是什么 Weka中有几种不同的聚类模式 使用训练集
  • 为什么我的Python在尝试运行turtle模块中的turtle.tracer()方法时不断崩溃?

    我正在使用海龟模块编写贪吃蛇游戏 但是当我将这一行添加到我的代码中时 海龟屏幕和 python 崩溃了 turtle tracer 0 有人可以帮助我完成游戏吗 多谢 my code from turtle import Turtle Sc
  • 根据 Scala 和 Spark 中的频率替换二元组

    我想用这种模式替换所有频率计数大于阈值的二元组 word1 concat concat word2 我已经尝试过 import org apache spark SparkConf SparkContext object replace d
  • 警告:X 的默认移动赋值运算符将多次移动分配虚拟基类 Y

    在 C 11 下测试库时 我在 Clang 下收到警告 我以前从未遇到过这个警告 并且搜索并没有提供太多的阅读和研究方式 该警告如下所示 它似乎与多重继承和公共基类有关 但我不清楚触发警告的细节或我应该采取什么措施来解决它 我的第一个问题是
  • Xml 数据到 WPF TreeView 的双向绑定

    我正在尝试重写我的森林垫 http ForestPad com使用 WPF 作为表示层的应用程序 在 WinForms 中 我以编程方式填充每个节点 但如果可能的话 我想利用 WPF 的数据绑定功能 一般来说 将 WPF TreeView
  • git pull Godaddy 与 Bluehost 的 shell_exec 配置

    我有一个来自 Github 的 git pull web hook 位于两个遥控器上 GoDaddy 生产 和 Bluehost 登台 这个问题与这些公司本身无关 而是关于设置差异的可能原因是什么 我有这个脚本 我已将其设置为 github
  • PHP 限制对管理页面的访问,除非登录

    我一直在考虑限制对管理页面访问的方法 其中之一是使用会话并使用管理页面中的下一个代码部分 if isset SESSION is admin header Location index php exit 我想知道是否有另一种方法可以做到这一
  • python读取HID

    我想做一个程序 它从连接到 Linux 系统的 HID 获取输入并从中生成 MIDI 我在 MIDI 方面还不错 但在 HID 方面却遇到了困难 虽然这种方法工作正常 取自 usr bin python2 import struct inp
  • 如何允许用户登录MySQL?

    作为 root mysql 用户 我执行了以下命令 grant all on mydb to john identified by john1 然后从 shell 中 我尝试通过以下方式登录 mysql h localhost u john
  • OpenCV 3:可用的 FeatureDetector::create() 和 DescriptorExtractor::create() 选项列表?

    edit 我正在看错误的OpenCV2代码示例 没有FeatureDetector create在 OpenCV3 中 这让我感到困惑 嘿 OpenCV 新手 通过分解其他人的 C 代码来通过示例进行学习 我想尝试以下所有可用选项 dete
  • 密码复杂性的正则表达式

    我正在尝试通过客户端 JavaScript 和服务器端 ASP NET C 上的正则表达式来实施密码复杂性的强制执行 规则如下 必须为 8 40 个字符 必须包含至少一位数字 必须包含至少一个小写字母 必须包含至少一个大写字母 必须包含至少
  • 如何修复选项 -F 错误未找到的目录[重复]

    这个问题在这里已经有答案了 我收到以下错误 ld 警告 找不到选项目录 F Applications Xcode app Contents Developer Platforms iPhoneSimulator platform Devel
  • Android SeekBar 使用 setMax 动态设置最大值后不刷新

    我正在使用 Stock SeekBar 组件来浏览一组 ViewPager 它工作得很好 唯一的问题是 当数据发生变化时 我必须通过 setMax int value 动态更改 SeekBar 的最大值 当我这样做时 SeekBar 不会更
  • zbarsdk ZBarReaderViewController - 设置ipad全屏

    我无法在 iPad 上全屏显示 zbarsdk 阅读器 它一直显示在左上角 我尝试过以下方法 reader wantsFullScreenLayout YES reader cameraOverlayView frame CGRectMak
  • 连续运行PHP脚本

    我在 MySQL 中有一个数据库 其中有时间条目 时间条目有1000多个 我想提取时间并在那个时间运行 PHP 脚本 我尝试连续运行 PHP 脚本来检查时间 但我的服务器不允许运行该脚本超过 60 秒 编辑 我必须每秒检查一次数据库 还有其
  • Post 方法 + WinHttpRequest + multipart/form-data

    我很困惑为什么这不起作用似乎找不到任何问题 这是代码 Public Const MULTIPART BOUNDARY speed Function getBalance As String Dim sEntityBody As String
  • 如何避免 Hibernate 中旧式的外连接 (+)?

    我写了这样的 HQL 查询 SELECT a FROM A a LEFT JOIN a b where Hibernate 生成这样的 sql 查询 SELECT a FROM A a LEFT JOIN a b where a b id