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();
}
}