gpt4 book ai didi

java - 使用 hibernate 查询连接三个表

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:13 24 4
gpt4 key购买 nike

我非常抱歉用有关 hibernate 查询的另一个问题打扰 Stack Overflow,但我已经尝试解决这个问题大约四个小时了,到目前为止还没有成功。

问题如下。我有一个处理“报价”、“来源”和“头寸”的模型。引用是来自一本书、一部戏剧、一篇论文等的引用——这种多样性就是“来源”对象的本质。引用在源中的确切位置就是位置。例如,“blablablabla”(引用)位于“编程艺术”(来源)的“第 5 章第 12 页”(位置)。

现在,我想要获取已为“源”注册的每个“位置”。但这两者之间没有直接映射,我想避免建立这种联系(尽管我开始相信没有其他解决方案)。另一方面,Quote 对象有一个 Source 和一个 Position。

这是引用类的摘录:

public class Quote
{

@ManyToOne(cascade=CascadeType.ALL)
Position position;

@ManyToOne(cascade=CascadeType.ALL)
Source source;

// ... other stuff

}

起初,我只是遇到了一些“没有连接路径”的异常,所以我阅读了 Stack Overflow 上能找到的所有内容。如果我理解正确,我的查询应该类似于:

currentSession.createQuery("from Position 
inner join Quote quote, Source source where quote.source = :idSource");

但即使这样我也遇到了这个异常:

Unable to resolve path [quote.source], unexpected token [quote]

我是否在某个地方犯了错误,或者我对 Hibernate 要求太多了?预先感谢您的帮助。

最佳答案

您要查找的查询是:

select q.position
from Quote q
where q.source = :source

请注意,您应该在此处传递实际的 Source 实体作为参数;如果您只想传递其 id,则最后一行应改为 where q.source.id = :idSource (假设您的标识符属性为 id)。

关于java - 使用 hibernate 查询连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com