В моей базе данных есть следующие таблицы ( SQLite ):
CREATE TABLE product (
id INTEGER NOT NULL,
name TEXT,
PRIMARY KEY (id)
)
CREATE TABLE feedback(
product INTEGER PRIMARY KEY,
score NUMERIC,
textnote VARCHAR(255),
FOREIGN KEY(product) REFERENCES product(id)
)
CREATE TABLE product_detail (
id INTEGER NOT NULL,
product INTEGER,
description TEXT,
url VARCHAR,
PRIMARY KEY (id),
FOREIGN KEY(product) REFERENCES product (id),
)
Так что feedback
находится в отношениях один к одному с product
и product_detail
находится в отношениях многих к одному с product
.
Я пытаюсь написать SQLite запрос для Hibernate 4 , который даст мне все атрибуты из 3 таблиц в одной таблице. Все, с чем я пришел, это вот что:
String hql = "SELECT p.id, p.name, d.id, d.description, d.url " +
"FROM ProductDetail d INNER JOIN d.product AS p";
Я правильно получаю нужные значения из product
и product_detail
. Как я могу добавить к запросу также информацию в feedback
? Я знаю, что во всех продуктах есть хотя бы одна деталь продукта, но я не могу сказать то же самое об обратной связи: большинство продуктов не имеют обратной связи. Я думаю, что я должен использовать LEFT JOIN
, но я не могу понять, как ... Обратите внимание, что, поскольку я использую Hibernate, у меня есть все классы относительно таблиц в моем приложении (Feedback
, ProductDetail
и Product
).