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

一、简单演示

	/**
	 * 查询的客户,客户和联系人有关系 select * from cst_customer c, cst_linkman l where c.id =
	 * l.id
	 */
	@Test
	public 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关键字,把数据封装到对象中
	 */
	@Test
	public 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();
	}

三、解决数据重复

	/**
	 * 数据的重复问题
	 */
	@Test
	public 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();
	}

源码下载


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值