Бумага HQL запрос для соединения таблиц
Я использую Hibernate для подключения к базе данных для проекта.
Я хотел бы получить запрос, который получает продукты из моей базы данных с описанием и именем на определенном языке. Параметр, который у меня есть, - это короткое имя языка, поэтому сначала мне нужно будет получить идентификатор языка, а затем получить текст на требуемых языках.
я попробовал следующий запрос hql, без успеха.
from Products as p
where p.productlanguages.languages.shortname like 'eng'
это образ часть базы данных, откуда должны поступать данные:
Я получил желаемый результат с sql-запросом, но я не могу заставить его работать в спящем режиме. Но я бы предпочел сделать это в hql.
SELECT * FROM products p
INNER JOIN productlanguage pl ON pl.Products_id = p.id
WHERE pl.Languages_id =
(
SELECT id FROM languages
WHERE Shortname = 'eng'
);
может ли кто-нибудь сказать мне, как построить этот запрос hql? Спасибо.
1 ответов
попробуйте ниже:
from Products p INNER JOIN p.productlanguages pl
where pl.languages.shortname ='eng'
Я предполагаю, что вы уже выделили Product-Productlanguages
отношения OneToMany
и Productlanguages-Langages
отношения ManyToOne
как показано на диаграмме E-R.
EDIT: кажется, есть опечатка в Productlanguage
отображение в строке public Languages getLanguages() {barcode
удалить barcode
в конце.
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Languages_id", nullable=false, insertable=false, updatable=false)
public Languages getLanguages() {barcode
return this.languages;
}