在Hibernate 4中具有3个实体的SQLite查询(嵌套连接?



我的数据库中有以下表(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), 
)

所以feedbackproduct处于一对一的关系中,product_detailproduct处于多对一的关系中。

我正在尝试为Hibernate 4编写一个 SQLite查询,它将在一个表中提供 3 个表中的所有属性。到目前为止,我得到的只是这个:

String hql = "SELECT p.id, p.name, d.id, d.description, d.url " +
"FROM ProductDetail d INNER JOIN d.product AS p";

我正确地从productproduct_detail中获取了我想要的值。如何将feedback中的信息也添加到查询中?我知道所有产品都至少有一个产品细节,但我不能对反馈说同样的话:大多数产品都没有反馈。我想我应该使用LEFT JOIN但我不知道如何... 请注意,当我使用 Hibernate 时,我拥有与应用程序中的表相关的所有类(FeedbackProductDetailProduct(。

您还必须加入feedback

SELECT 
p.id, p.name,
f.score, f.textxnote, 
d.id, d.description, d.url
FROM product p 
INNER JOIN feedback f ON f.product = p.id
INNER JOIN ProductDetail d ON d.product = p.id

如果产品在任一表中没有行,则可以更改为LEFT联接feedbackProductDetail

最新更新