hibernate关于多对多映射和多对一的hql查询

public void queryCustomerbymerchantId(){
		SessionFactory sf = HibernateUtil.getSessionFactory();
		Session session = sf.getCurrentSession();
		Transaction ts = session.beginTransaction();
		try {
	   Query query=session.createQuery("select c from Customer c join c.merchant m where m.mid=1");
	   List customer = query.list();
	   for(int i=0;i<customer.size();i++)
	   {
	   	Customer customers =(Customer)customer.get(i);
	   		System.out.println(i+"--"+customers);
	   }

		ts.commit();	
		
	} catch (HibernateException e) {
		// TODO Auto-generated catch block
		if(ts != null)
		{
			ts.rollback();
		}
		e.printStackTrace();
	}
}

运行结果:


由关系表可以看出运行结果是正确的


最容易出现错误的就是hql语句,大家可能会习惯性直接select c from Customer c where .......;

再写一个例子,customer与order是一对多的关系,通过order找customer

public void queryCustomerbyOrderId(){
		SessionFactory sf = HibernateUtil.getSessionFactory();
		Session session = sf.getCurrentSession();
		Transaction ts = session.beginTransaction();
//		int n;
//		Scanner sc=new Scanner(System.in);
//		n=sc.nextInt();
		try {
	   Query query=session.createQuery("select customer from Order o where  o.id=1" );
	   System.out.println(query);
	   List customer = query.list();   
	   for(int i=0;i<customer.size();i++)
	   {
	   	Customer customers =(Customer)customer.get(i);
	   		System.out.println(i+"--"+customers);
	   }

		ts.commit();	
		
	} catch (HibernateException e) {
		// TODO Auto-generated catch block
		if(ts != null)
		{
			ts.rollback();
		}
		e.printStackTrace();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值