Hibernate学习之路(十二):hibernate实现左外,内(迫切)连接(Oracle)

本文详细探讨了Hibernate中的左连接和迫切连接,包括迫切左外连接和左外连接的实现,以及如何使用LEFT JOIN FETCH和LEFT JOIN进行查询。同时,提到了迫切内连接的用法,并指出在HQL查询中如何指定检索策略。文章还强调了在没有明确指定检索策略时,HQL会遵循映射文件配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

左连接
迫切左外连接:
  1. LEFT JOIN FETCH 关键字表示迫切左外连接检索策略.

  2. list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee 集合都被初始化, 存放所有关联的 Employee 的实体对象.

  3. 查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素
    /*
     * 测试迫切左外连接(查询一方的时候,就已经将另外一端的数据初始化好了,即使一方没有另外一方的对应数据也要强制查询出来)
     */
    @Test
    void testLeftJoinFetch() {

        //查询部门id等于员工id的所有记录的条数(有重复)
//      String hql = "from Department d left join fetch d.emps ";

        //方式一去重:通过关键字distinct去重(有几个部门就初始化几个Department对象即可,但是在数据库中显示所有员工的记录数+没有员工的部门记录记录数)
//      String hql = "select distinct d from Department d left join fetch d.emps ";

        //方式二去重:通过linkedHashSet集合属性
        String hql = "from Department d left join fetch d.emps";
        List<Department> list = this.s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值