我非常抱歉打扰Stack Overflow关于那些hibernate查询的另一个问题,但它已经过了四个小时左右我已经尝试解决这个问题,到目前为止还没有成功。
问题如下。我有一个模型可以处理" Quotes"," Sources"和"职位"。报价是书籍,戏剧,论文等的引用 - 这种多样性是什么"来源"对象是。引用在源中的确切位置是位置。所以,例如," blablablabla" (引用)在第5章"第12页上。 (位置)"编程艺术" (来源)。
现在,我希望得到每个"职位"已经注册了" Source"。但是这两者之间没有直接映射,我想避免建立这种联系(尽管我开始相信没有其他解决方案)。另一方面,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提出了太多要求?提前感谢您的帮助。
答案 0 :(得分:1)
您正在寻找的查询是:
select q.position
from Quote q
where q.source = :source
请注意,您应该将实际Source
实体作为参数传递到此处;如果您只想传递其ID,则最后一行应该读取where q.source.id = :idSource
(假设您的标识符属性为id
)。