Hibernate的Hql多表操作

项目中Hiberinated的多表操作语法比较诡异,一般不建议使用
内链接

	@Test
	//Hql的多表查询
	//内链接将两方的数据放入数组中
	public void test(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//linkmans为Customeri对象中的Set集合的名称
		String hql = "from Customer c inner join c.linkmans";
		Query query = session.createQuery(hql);
		List<Object[]> list = query.list();
		for (Object[] objects : list) {
			System.out.println(Arrays.toString(objects));
		}
		tx.commit();
		session.close();
	}

迫切内链接
将linkmans集合装到Customer对象中

//迫切内链接
	//将linkmans集合装到Customer对象中
		@Test
		public void test2(){
			Session session = HibernateUtils.openSession();
			Transaction tx = session.beginTransaction();
			//linkmans为Customeri对象中的Set集合的名称
			String hql = "from Customer c inner join fetch c.linkmans ";
			Query query = session.createQuery(hql);
			List<Customer> list = query.list();
			System.out.println(list);
			tx.commit();
			session.close();
		}

左外链接


		@Test
		//左外链接 两方的数据放入数组中
		public void test3(){
			Session session = HibernateUtils.openSession();
			Transaction tx = session.beginTransaction();
			//linkmans为Customeri对象中的Set集合的名称
			String hql = "from Customer c left join c.linkmans ";
			Query query = session.createQuery(hql);
			List<Object[]> list = query.list();
			for (Object[] objects : list) {
				System.out.println(Arrays.toString(objects));
			}
				
			tx.commit();
			session.close();
		}

右外连接

		@Test
		//右外链接两方的数据放入数组中
		public void test4(){
			Session session = HibernateUtils.openSession();
			Transaction tx = session.beginTransaction();
			//linkmans为Customeri对象中的Set集合的名称
			String hql = "from Customer c right join c.linkmans ";
			Query query = session.createQuery(hql);
			List<Object[]> list = query.list();
			for (Object[] objects : list) {
				System.out.println(Arrays.toString(objects));
			}
				
			tx.commit();
			session.close();
		}

猜你喜欢

转载自blog.csdn.net/weixin_40007271/article/details/86159658