Hibernate:使用公式进行多对一

2024-03-02

我希望有人能帮我找到答案。

我正在使用旧数据库,无法更改任何预先存在的表,因为其他应用程序依赖于它们。

我有三个主要的现有表:A,B,C.

A 有一个引用 B 的列(多对一关系)。问题是它应该与 C 而不是 B 有关系。所以我创建了一个 *-1 映射 BC。

Tables: A,B,C,BC (all have ID field)
A-B many to one
B-C many to one through BC
Needed:A-C without altering A,B or C

我不想有 B 或 BC 的 java 实体,只有 A 和 C,并且 A 应该有一个字段 A.c

到目前为止,我已经尝试使用 @Formula 注释,但没有成功。

class A{
  @ManyToOne
  @Formula(value="select BC.c from BC where BC.b = b")
  private C c;
}

这会产生以下 SQL:

select this_.c_ID from A this_

它显然失败了,因为表 A 中没有列 c_ID(为什么公式被完全忽略?)。

删除 @ManyToOne 注释会产生:

select (select BC.c from BC where BC.b = this_.b) as formula_0 from A this_

这将是完美的,除非 Hibernate 需要一个 BINARY 值(类 C 的序列化?)并在转换它接收的 Integer 时抛出异常。

这个 ID 对于延迟加载来说应该足够了,但是我如何告诉它这样做呢? @ManyToOne 的任何使用都会破坏公式。

如何在不更改 A、B、C 表或创建 java 类 B 或 BC 的情况下实现 A-C 链接?

感谢您提供任何信息, 担


听起来很像这个bug http://opensource.atlassian.com/projects/hibernate/browse/HHH-4382不幸的是,还没有使用注释进行修复,但似乎您可以使用这些类的 xml 映射文件来处理它。

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

Hibernate:使用公式进行多对一 的相关文章

随机推荐

  • 我可以从 Chrome 扩展程序访问站点的 localStorage 吗?

    我的 chrome 扩展有两种状态 1 某些站点在localStorage 另一个域 中有身份验证数据 所以我必须显示主窗口 2 没有身份验证数据 因此我必须显示带有登录名和密码表单的窗口 为了定义是否提供身份验证数据 我想检查他的 loc
  • 如何使用pdfkit ios 11打开pdf文件?

    我正在尝试使用新的 iOS 11 框架 pdfkit 打开 PDF 文件 但我无法做到这一点 所以帮助我使用 pdfkit 框架打开文件 先感谢您 这是基于 Objective C 的示例 Ensure PDFKit framework i
  • 推送通知警报文本的最大长度是多少?

    iOS 推送通知的警报文本的最大长度是多少 The 文档 https developer apple com go id push notifications指出通知有效负载总共必须低于 256 字节 https developer app
  • PWA 的推送通知或 Web 推送通知

    首先 我想说我一直在研究推送通知和网络通知 但我有点困惑 我从这里读到 PWA 的推送通知不适用于 Safari 上的 iOS iPhone 从 PWA 向 iOS 发送推送通知 https stackoverflow com questi
  • 如何拥有一个写入服务总线队列的异步函数?

    使用 Azure WebJobs SDK 我想创建一个异步函数 该函数将接收 ServiceBus 队列输入并写入 ServiceBus 队列输出 异步方法不能有 out 参数 例如在 BlobStorage 上 似乎可以通过使用 Stre
  • 解析 nmap 结果

    我正在 Linux 上使用 Python 2 6 开发一个项目 我在终端使用 nmap 来获取这些扫描结果 我在一个字符串中得到了这个结果 Starting Nmap 6 47 http nmap org at 2015 06 28 23
  • 创建 AMI 需要很长时间

    我正在为具有 100G 文件的服务器创建 AMI 已经过去一个多小时了 事情还没有结束 AMI 仍然显示待处理 有什么问题吗 我应该怎么办 只是为了让其他人知道 这个过程可能需要非常非常长的时间 我的 100 GB AMI 大约需要 2 5
  • Excel 2010:查找两个日期时间之间的秒数

    我有一个专栏Cal Date time 其中包含通话的日期和时间 如下所示 A B C D Number Call Date Time Duration in Sec 123 2010 01 10 01 07 24 465000 123 2
  • Android 中应用程序“资产”文件夹的路径是什么?

    我正在开发一个 Android 应用程序 希望在 apk 中捆绑一个视频文件 mp4 以便在启动应用程序时我可以播放简短的介绍视频 不幸的是 我无法弄清楚应该将该视频文件放置在项目文件夹中的哪个位置 以及如何访问它 文件的路径 我在用vid
  • Pandas:iterrow 循环的替代方案

    我有一个在 pandas 中运行的小函数 当我运行时会抛出 ValueErrorif x in y陈述 我看到了类似的问题 建议使用布尔索引 isin and where 但我无法将任何示例适应我的情况 任何建议将非常感激 附加说明 gro
  • jQuery :包含 html

    我有一个表 其中包含逗号分隔的数字列表 如下所示 td 72 76 81 td 我正在尝试选择表格单元格don t包含特定的数字 该选择器有效 td not contains 76 table 问题是可能存在包含 576 或 761 等的行
  • 如何编写无分支 std::vector 扫描?

    我想对数组编写一个简单的扫描 我有一个std vector
  • CouchDB 视图:MapReduce 中可以接受多少处理?

    我一直在尝试使用 CouchDB 进行 MapReduce 一些示例显示了映射归约函数中可能存在的一些繁重逻辑 在一种特殊情况下 他们在映射内执行 for 循环 在发出您选择的文档之前 MapReduce 是否会在每个可能的文档上运行 如果
  • void Function(int) 不是 void Function(dynamic) 的有效重写

    class Parent
  • Powershell XML:属性是否存在会改变获取值的方式

    我在 Windows 8 PC 上使用 Powershell 3 0 我有一些简单的 XML 文件 其内容如下 没有 foobar 部分 稍后会出现
  • 将数据插入通过外键链接的表中

    我正在使用 PostgreSQL Customer Customer ID Name Order Order ID Customer ID Price 要插入订单 这是我通常需要做的 例如 John 下了 1 34 价格的订单 1 Get
  • scikit-learn 中聚类的混淆矩阵

    我有一组带有已知标签的数据 我想尝试聚类 看看是否可以获得已知标签给出的相同聚类 为了测量准确性 我需要得到类似混淆矩阵的东西 我知道我可以轻松获得分类问题测试集的混淆矩阵 我已经尝试过了this http scikit learn org
  • IE 中列表项后的边距

    我使用这段代码来展示 ul ul li class odd Breakbeat li li class even Classical li li class odd Downbeat li li class even Filmmusik l
  • Web.xml:url-pattern 标签彼此相关吗?

  • Hibernate:使用公式进行多对一

    我希望有人能帮我找到答案 我正在使用旧数据库 无法更改任何预先存在的表 因为其他应用程序依赖于它们 我有三个主要的现有表 A B C A 有一个引用 B 的列 多对一关系 问题是它应该与 C 而不是 B 有关系 所以我创建了一个 1 映射