hibernate的多表查询

1.交叉连接

select  * from A ,B

2.内连接   可以省略inner join

   隐式内连接:

select * from A,B where A.id = B.aid;

   显式内连接:

select * from A inner join B on A.id = B.aid;

   迫切内连接:

需要加上fetch关键字

内连接查询两者共有的属性数据。

3.外连接 outer join

  左外连接:

select * from A left outer join B on A.id= B.aid;

  右外连接:

select * from A right outer join B on A.id = B.aid;

迫切左外连接:需要加上fetch关键字,返回的是对象,不再是数组。

外连接查询共有属性和一方连接的属性

 

Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        // SQL:SELECT * FROM cst_customer c INNER JOIN cst_linkman l ON
        // c.cust_id = l.lkm_cust_id;
        // HQL:内连接 from Customer c inner join c.linkMans
        /*
         * List<Object[]> list = session.createQuery(
         * "from Customer c inner join c.linkMans").list(); for (Object[]
         * objects : list) { System.out.println(Arrays.toString(objects)); }
         */

        // HQL:迫切内连接 其实就在普通的内连接inner join后添加一个关键字fetch. from Customer c inner
        // join fetch c.linkMans
        List<Customer> list = session.createQuery("select distinct c from Customer c inner join fetch c.linkMans")
                .list();// 通知hibernate,将另一个对象的数据封装到该对象中

        for (Customer customer : list) {
            System.out.println(customer);
        }
        tx.commit();

 

转载于:https://www.cnblogs.com/yanqingguo/p/9757791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值