hibernate 多表查询

 1     public List dzcx(Object a) {
 2         try{
 3             
 4             //Query p=getSession().createQuery("PersonInf where name=:name ");
 5             Query p=getSession().createQuery("select p.name,p.age,a.addressDetail from PersonInf as p" +
 6                     " inner join p.addressInfs as a" +
 7                     " where a.addressDetail=:a" );
 8             //要加上select就要加上别名
 9             //多个表之间查询加上   inner join
10             p.setParameter("a", a);
11             return    p.list();
12         }
13         catch(RuntimeException e)
14         {
15             log.error("find Name failed", e);
16             throw e;
17         }

select p.name,p.age,a.addressDetail from PersonInf as p inner join p.addressInfs as a where a.addressDetail=:a 

这里是根据地址查询,显示名字、年龄、地址。 inner join  自动连接中间表,根据p.addressInfs 找到addressInf表。

 

 

调用查询:

<%

 PersonInfDAO p=new PersonInfDAO();

List a=p.dzcx("垫江");

Iterator it=a.iterator();

while(it.hasNext()){

 Object[] pit=(Object[])it.next();//注意如果返回的是一个值,而不是一个数组,那么这里就应该是Object pit=(Object)it.next();

out.print(pit[0]);

out.print(pit[1]);

out.print(pit[2]);

}

%>

转载于:https://www.cnblogs.com/ZSK991656110/p/4484353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值