Мне очень жаль беспокоить Stack Overflow еще одним вопросом по этим запросам гибернации, но прошло уже около четырех часов, и я пытался решить эту проблему, но пока безуспешно.
Проблема заключается в следующем. У меня есть модель, которая имеет дело с "Котировки", "Источники" и "Позиции". Цитата - это цитата из книги, пьесы, тезиса и т. Д. - это многообразие и есть объекты «Источники». И точное место, где цитата в Источнике - это Позиция. Так, например, «blablablabla» (цитата) есть на «странице 12 в главе 5» (позиция) «Искусства программирования» (Источник).
Теперь я хочу получить все «Позиции», уже зарегистрированные для «Источника». Но между этими двумя нет прямого сопоставления, и я бы хотел избежать этой связи (хотя я начинаю верить, что других решений нет). С другой стороны, у объектов Quote есть Источник и Позиция.
Это выдержка из класса цитаты:
public class Quote
{
@ManyToOne(cascade=CascadeType.ALL)
Position position;
@ManyToOne(cascade=CascadeType.ALL)
Source source;
// ... other stuff
}
Сначала я просто получил некоторые исключения "нет пути для соединения", поэтому я прочитал все, что смог найти в переполнении стека. Если я правильно понимаю, мой запрос должен выглядеть примерно так:
currentSession.createQuery("from Position
inner join Quote quote, Source source where quote.source = :idSource");
Но даже так я получил это исключение:
Unable to resolve path [quote.source], unexpected token [quote]
Я где-то допустил ошибку или слишком много спрашиваю о Hibernate? Заранее благодарю за помощь.