Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HQL中的左连接-Hibernate查询_Java_Sql_Spring_Hibernate_Hql - Fatal编程技术网

Java HQL中的左连接-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

我有2个Entite,每个都存储在mysql表中。 1.productA:{productId(pk),desc,date} 2.productB:{productId(主键),数量,类型,日期}

我要运行此SQL查询:

(从a退回b中不存在的所有产品)

是否可以在Hibernate中编写此查询

谢谢

是否可以在Hibernate中编写此查询

当然可以。发件人:

左连接和左外连接是同义词。它们使 检索连接中匹配值的一组实体 情况可能不存在。左外部联接的语法为

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
后一个查询的结果将排除没有 库存中的产品,而前一个查询将包括它们

左连接的一个重要用例是启用 作为查询副作用的相关数据项。这已经完成了 通过如下所述将左连接指定为提取连接