Hibernate 学习笔记 之 HQL 内连接和迫切内连接

来源:互联网 发布:js window.open 参数 编辑:程序博客网 时间:2024/06/05 18:06

本demo采用5.x以前的query

一、HQL 内连接

  以数组的方式进行存储

 /***     * HQL 内连接     *     * 内连接查询hql语句写法:以客户和联系人为例     *     * from Customer c inner join c.setLinkMan     */    @Test    public void testJoin() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            //1.创建query对象            Query query = session.createQuery("from Customer c inner join c.setLinkMan");            List<Customer> list = query.list();            tx.commit();        }catch (Exception e){            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }

二、迫切内连接

  以对象的方式进行存储

/**     * 迫切内连接     *     * 区别:使用内连接返回list中每部分是数组,     *      迫切内连接返回list每部分是对象     *     * from Customer c inner join fetch c.setLinkMan     */    @Test    public void testJoin2() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            //1.创建query对象            Query query = session.createQuery("from Customer c inner join fetch c.setLinkMan");            List<Customer> list = query.list();            tx.commit();        }catch (Exception e){            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }

三、左外连接

/**     * 左外连接     *     * from Customer c left outer join c.setLinkMan     *     * 返回每部分是数组     */    @Test    public void testJoin3() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            //1.创建query对象            Query query = session.createQuery("from Customer c left outer join c.setLinkMan");            List<Customer> list = query.list();            tx.commit();        }catch (Exception e){            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }

四、迫切左外连接

/**     * 迫切左外连接     * from Customer c left outer join fetch c.setLinkMan     *     * 返回的每部分是对象     */    @Test    public void testJoin4() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            //1.创建query对象            Query query = session.createQuery("from Customer c left outer join fetch c.setLinkMan");            List<Customer> list = query.list();            tx.commit();        }catch (Exception e){            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }

五、右外连接

/**     * 右外连接     * from Customer c right outer join fetch c.setLinkMan     */    @Test    public void testJoin5() {        SessionFactory sessionFactory = null;        Session session = null;        Transaction tx = null;        try{            sessionFactory = HibernateUtils.getSessionFactory();            session = sessionFactory.openSession();            tx = session.beginTransaction();            //1.创建query对象            Query query = session.createQuery("from Customer c right outer join fetch c.setLinkMan");            List<Customer> list = query.list();            tx.commit();        }catch (Exception e){            tx.rollback();        }finally {            session.close();            sessionFactory.close();        }    }
0 0
原创粉丝点击