Java HQL中的左连接-Hibernate查询
我有2个Entite,每个都存储在mysql表中。 1.productA:{productId(pk),desc,date} 2.productB:{productId(主键),数量,类型,日期} 我要运行此SQL查询: (从a退回b中不存在的所有产品) 是否可以在Hibernate中编写此查询 谢谢 是否可以在Hibernate中编写此查询 当然可以。发件人: 左连接和左外连接是同义词。它们使 检索连接中匹配值的一组实体 情况可能不存在。左外部联接的语法为Java HQL中的左连接-Hibernate查询,java,sql,spring,hibernate,hql,Java,Sql,Spring,Hibernate,Hql,我有2个Entite,每个都存储在mysql表中。 1.productA:{productId(pk),desc,date} 2.productB:{productId(主键),数量,类型,日期} 我要运行此SQL查询: (从a退回b中不存在的所有产品) 是否可以在Hibernate中编写此查询 谢谢 是否可以在Hibernate中编写此查询 当然可以。发件人: 左连接和左外连接是同义词。它们使 检索连接中匹配值的一组实体 情况可能不存在。左外部联接的语法为 LEFT [OUTER] JOIN
LEFT [OUTER] JOIN join_association_path_expression [AS] identification_variable
[join_condition]
没有指定联接条件的外部联接具有隐式联接
对应于的外键关系的条件
加入\关联\路径\表达式。它通常会映射到
在外键关系上具有ON条件的SQL外部联接
在以下查询中:Java持久性查询语言:
SELECT s.name, COUNT(p)
FROM Suppliers s LEFT JOIN s.products p
GROUP BY s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId
GROUP By s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId AND p.status = 'inStock'
GROUP BY s.name
SQL:
SELECT s.name, COUNT(p)
FROM Suppliers s LEFT JOIN s.products p
GROUP BY s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId
GROUP By s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId AND p.status = 'inStock'
GROUP BY s.name
带有显式ON条件的外部联接将导致额外的
指定要添加到生成的SQL中的联接条件:Java
持久性查询语言:
SELECT s.name, COUNT(p)
FROM Suppliers s LEFT JOIN s.products p
ON p.status = 'inStock'
GROUP BY s.name
SQL:
SELECT s.name, COUNT(p)
FROM Suppliers s LEFT JOIN s.products p
GROUP BY s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId
GROUP By s.name
SELECT s.name, COUNT(p.id)
FROM Suppliers s LEFT JOIN Products p
ON s.id = p.supplierId AND p.status = 'inStock'
GROUP BY s.name
请注意,此查询的结果将不同于
以下查询:
SELECT s.name, COUNT(p)
FROM Suppliers s LEFT JOIN s.products p
WHERE p.status = 'inStock'
GROUP BY s.name
后一个查询的结果将排除没有
库存中的产品,而前一个查询将包括它们
左连接的一个重要用例是启用
作为查询副作用的相关数据项。这已经完成了
通过如下所述将左连接指定为提取连接