hibernate框架的查询方式hql的多表查询(二十二)

来源:互联网 发布:lte网络优化工程师招聘 编辑:程序博客网 时间:2024/05/17 23:42

一、简单演示

/** * 查询的客户,客户和联系人有关系 select * from cst_customer c, cst_linkman l where c.id = * l.id */@Testpublic void run1() {Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();// 内连接的写法Query query = session.createQuery(" from Customer c inner join c.linkmans ");// 默认的返回值是数组List<Object[]> list = query.list();for (Object[] objects : list) {System.out.println(Arrays.toString(objects));}tx.commit();}

二、封装到对象中

/** * 数据默认返回的是数组,把数据封装到对象中  * 提供关键字:fetch 迫切连接。使用fetch关键字,把数据封装到对象中 */@Testpublic void run2() {Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();// 内连接的写法Query query = session.createQuery(" from Customer c inner join fetch c.linkmans ");// 默认的返回值是数组List<Customer> list = query.list();for (Customer customer : list) {System.out.println(customer);}tx.commit();}

三、解决数据重复

/** * 数据的重复问题 */@Testpublic void run3() {Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();// 内连接的写法Query query = session.createQuery(" from Customer c inner join fetch c.linkmans ");// 默认的返回值是数组List<Customer> list = query.list();// 手动解决,编程中都使用这种方式解决数据重复问题Set<Customer> set = new HashSet<Customer>(list);for (Customer customer : set) {System.out.println(customer);}tx.commit();}

源码下载


原创粉丝点击