Hibernate关联表特殊查询(一方)inner join fetch,left join fet

inner join fetch
/**
* 一对多中的一方inner join fetch多方
* 这里不能用inner join on
* 查询结果是它把一方对多方的那个集合里面的对象都查询出来放到一方的集合中
*/
public List getallByinnerjoinTShop(){
   List list=null;
   try {
    Query query=this.GetSession().createQuery("from TType as t inner join fetch t.TShops");
    list=query.list();
   } catch (HibernateException e) {
    throw e;
   }finally{
    this.ColseSession();
   }
   return list;
}
测试:
List list=typedao.getallByinnerjoinTShop();
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    TType type=(TType) iter.next();
    System.out.println(type.toString());
    Iterator<TShop> it=type.getTShops().iterator();
    while(it.hasNext()){
     TShop sh=it.next();
     System.out.println(sh.toString());
    }
   }

left join fetch
/**
* left join fetch 左外连接
*/
public List getallLeftjoinfetchTShop(){
   List list=null;
   try {
    Query query=this.GetSession().createQuery("from TType as t left join fetch t.TShops");
    list=query.list();
   } catch (HibernateException e) {
    throw e;
   }finally{
    this.ColseSession();
   }
   return list;  
}
测试:
List list=typedao.getallLeftjoinfetchTShop();
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    TType type=(TType) iter.next();
    System.out.println(type.toString());
    Iterator<TShop> it=type.getTShops().iterator();
    while(it.hasNext()){
     TShop sh=it.next();
     System.out.println(sh.toString());
    }
   }

left join
/**
* left join 左外连接
*
*/
public List getallLeftjoinTShop(){
   List list=null;
   try {
    Query query=this.GetSession().createQuery("from TType as t left join t.TShops");
    list=query.list();
   } catch (HibernateException e) {
    throw e;
   }finally{
    this.ColseSession();
   }
   return list;  
}
测试:
List list=typedao.getallLeftjoinTShop();
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    Object[] obj=(Object[]) iter.next();
    TType type=(TType) obj[0];
    TShop shop=(TShop) obj[1];
    System.out.println(type.toString());
    //访问type对象里面的TShops集合里的元素,有懒加载问题
    //Iterator<TShop> it=type.getTShops().iterator();
    //while(it.hasNext()){
    //TShop sh=it.next();
    //System.out.println(sh.toString());
    //}
    //from TType as t left join t.TShops shop可能为空
    if(shop!=null){
     System.out.println(shop.toString());
    }   
   }
隐式内连接
/**
* 隐式内连接
*/
public List getall(){
   List list=null;
   try {
    Query query=this.GetSession().createQuery("from TType as t,TShop as s where s.TType=t");
    list=query.list();
   } catch (HibernateException e) {
    throw e;
   }finally{
    this.ColseSession();
   }
   return list;
}
测试:
List list=typedao.getall();
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    Object[] obj=(Object[]) iter.next();
    TType type=(TType) obj[0];
    TShop shop=(TShop) obj[1];
    System.out.println(type);
    System.out.println(shop);
   }


集合过滤
/**
* 集合过滤
*/
public List getallfilter(int price){
   List list=null;
   try {
    Query query=this.GetSession().createQuery("from TType");
    list=query.list();
    Iterator iter=list.iterator();
    while(iter.hasNext()){
     TType type=(TType) iter.next();
     Query que=this.GetSession().createFilter(type.getTShops(), "where SPrice>=?");
     que.setInteger(0, price);
     List arr=que.list();
     type.setTShops(new HashSet(arr));
    }
   } catch (HibernateException e) {
    throw e;
   }finally{
    this.ColseSession();
   }
   return list;
}
测试:
List list=typedao.getallfilter(10);
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    TType type=(TType) iter.next();
    System.out.println(type.toString());
    Iterator<TShop> it=type.getTShops().iterator();
    while(it.hasNext()){
     TShop sh=it.next();
     System.out.println(sh.toString());
    }
   }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值