- select c.custName,<strong>sum(l.oddCount*l.oddPrice</strong>) from OrdersLine l left join l.orders o left join l.orders.cstCustomer c
- where o.cstCustomer.custNo=c.custNo and o.odrId= l.orders.odrId
- group by c.custName
- order by 2
查询三张表:orders(订单表),OrdersLine(订单详情),cstCustomer(客户表)
实现查询客户订单总额功能。
HQL中使用左外连接查询 跟SQL不一样的地方是
1.三张表之间的外键关系必须事先配置好,如果生成的实体类和hibernate配置文件没有外键关系则不能使用左连接。
2.不使用 ON。from OrdersLine l left join l.orders o where ~,不需要写on,而将on的条件写在where里。
3.左连接表名写法是 “from OrdersLine l left join l.orders o ” orders 是OrdersLine 的属性
4.如果用select 查询其中几个字段,注意要加上 model.字段名,否则可能会出现字段重复,报“字段名无效”错误
5.如果要按函数(sum、count 等)生成字段排序,不能使用按生成字段别名排序。而要按 字段位置排序,即order by 2.
相关推荐
还有左外连接(`left outer join`)、右外连接(`right outer join`)和全连接(`full join`),但全连接在HQL中并不常用。简写形式如`join`和`left join`可用于内连接和左外连接。`fetch`连接允许在查询中初始化相...
这里的`join fetch`实现了左外连接,并将订单信息一同加载到内存中。 七、HQL动态查询 在实际开发中,需求经常变化,因此动态构建HQL查询语句显得尤为重要。Hibernate提供`Criteria API`和`Querydsl`等工具,可以...
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询
左外抓取连接是左外连接的一种特殊形式,主要用于获取左表记录的关联数据: ```hql SELECT s, c FROM Student s LEFT OUTER JOIN FETCH s.courses c; ``` 这里使用了`FETCH`关键字来立即加载关联数据。 ##### 右...
例如,“JOIN cat.mate as mate”用于内连接,而“LEFT JOIN cat.kittens as kitten”则用于左外连接,以便处理可能存在空值的情况。 5. **FETCH JOIN**:FETCH JOIN是HQL的一种特殊连接类型,用于优化查询性能,...
连接类型包括:`inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和`full join`(全连接)。`join`的简写形式如`from Cat as cat join cat.kittens as kitten`,简化了查询...
- **LEFT OUTER JOIN**:左外连接,返回左侧实体的所有记录,以及右侧实体匹配的记录。 ```sql FROM com.example.Cat AS cat LEFT OUTER JOIN cat.kittens AS kitten; ``` - **FULL JOIN**:全连接,返回两个...
HQL支持多种类型的关联查询,如内连接(inner join)、左连接(left join)、右连接(right join)和全连接(full join)。例如,`from Order as o inner join o.products as p`表示对Order与Product之间的关联进行...
通过JOIN关键字,可以实现内连接、外连接(左连接、右连接、全连接)。例如: ```sql SELECT p, c FROM Product p JOIN p.category c WHERE c.name = 'Electronics' ``` 这条语句会返回所有属于'Electronics'分类的...
### Hibernate HQL 教程知识点总结 #### 1.1 HQL基础 ##### 1.1.1 默认数据库表和数据 - **介绍**: 本文档以`joblog`数据库为例,该数据库包含三...- **解释**: 抓取内连接会立即加载关联对象,类似于左外抓取连接。
2. **左外连接**:`LEFT JOIN`保留左侧实体的所有记录,即使右侧无匹配,如`SELECT e, d FROM Employee e LEFT JOIN e.department d`。 3. **子查询**:在查询中嵌入其他查询,如`WHERE e.id IN (SELECT id FROM ...
6. **连接查询**:通过JOIN关键字,可以处理多表关联查询,包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 7. **子查询**:在SELECT或WHERE子句中使用子查询,提供更灵活的...
- `from Cat cat left outer join cat.mate` 表示左外连接,即使mate为null也会返回cat的信息。 9. **子查询**: HQL还允许在查询中嵌套查询,例如,`select p from Person p where p in (select friend from ...
- 支持不同类型的连接:内连接(`inner join`)、左外连接(`left outer join`)、右外连接(`right outer join`)、全连接(`full join`)。 ### 8. `select`子句 - `select`子句用于指定查询结果中包含的对象和...
- **右外连接(RIGHT OUTER JOIN)** 类似左外连接,但以右表为主。 - **全连接(FULL JOIN)** 返回左右表所有记录,包括不匹配的记录。 ### 迫切外连接与fetch - **LEFT OUTER JOIN FETCH** 和 **LEFT JOIN ...
6. **支持关联查询**:可以方便地处理一对一、一对多、多对一、多对多的关联关系,包括左连接、右连接等。 7. **可扩展性**:通过自定义函数和表达式,Criteria API 可以扩展以支持特定数据库的特有功能。 8. **...
Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便地导航到关联的对象,无需...
16.4.1 迫切左外连接检索(fetch属性为“join”) 16.4.2 延迟检索(lazy属性为默认值“proxy”) 16.4.3 无代理延迟检索(lazy属性为“no-proxy”) 16.4.4 立即检索(lazy属性为“false”) 16.4.5 批量...