如何使用hibernate实现多表关联

HibernateUtil.java  
  获得连结  
  <----------------------------------------------------->  
   
  import   net.sf.hibernate.*;  
  import   net.sf.hibernate.cfg.*;  
  import   org.apache.log4j.Logger;  
   
   
  public   class   HibernateUtil   {  
   
  private   static   Logger   log   =   Logger.getLogger(HibernateUtil.class);  
   
  private   static   final   SessionFactory   sessionFactory;  
   
  static{  
  try{  
  //Create   the   SessionFactory  
  sessionFactory   =   new   Configuration().configure().buildSessionFactory();  
  }catch(Throwable   ex){  
  ex.printStackTrace();  
  log.error("Initial   SessionFactory   creation   failed.",ex);  
  throw   new   ExceptionInInitializerEr ror(ex);  
  }  
  }  
   
  public   static   final   ThreadLocal   session   =   new   ThreadLocal();  
  public   static   Session   currentSession()   throws   HibernateException{  
  Session   s   =   (Session)   session.get();  
   
  //Open   a   new   Session,if   this   Thread   has   none   yet  
  if(s   ==   null){  
  s   =   sessionFactory.openSession();  
  session.set(s);  
  }  
  return   s;  
  }  
  public   static   void   closeSession()   throws   HibernateException{  
  Session   s   =   (Session)   session.get();  
  session.set(null);  
  if(s   !=   null)  
  s.close();  
  }  
  }  
   
  <------------------------------------------------------->  
  Page.java  
  分页  
  <--------------------------------->  
  mport   net.sf.hibernate.*;  
  import   java.util.List;  
  import   java.util.Collection;  
  import   java.util.ArrayList;  
   
   
  public   class   Page   {  
   
  public   List   Total_List;  
   
  public   Collection   Result_coll;  
   
  public   int   Row_Num;  
   
  public   int   Page_Num;  
   
  private   int   pageSize;  
   
  //initailzation  
  public   Page(Query   query,   int   pageSize)   {  
   
  this.pageSize   =   pageSize;  
   
  this.Result_coll   =   new   ArrayList();  
   
  try   {  
   
  this.Total_List   =   query.list();  
   
  this.Row_Num   =   this.Total_List.size();  
   
  this.Page_Num   =   (this.Row_Num   %   this.pageSize   >   0)   ?   (this.Row_Num/   this.pageSize   +   1)   :   (this.Row_Num   /   this.pageSize);  
   
  }   catch   (Exception   e)   {  
  System.err.println("Page.class   initialization   failed");  
  }  
  }  
   
   
  public   Collection   ChangePage(int   page)   {  
   
  int   BigenNum   =   page   *   this.pageSize;  
  int   EndNum   =   (page   +   1)   *   this.pageSize   -   1;  
   
  for   (int   i   =   BigenNum;   i   <=   EndNum;   i++)   {  
  this.Result_coll.add(this.Total_List.get(i));  
  }  
   
  return   this.Result_coll;  
  }  
   
  //返回   结果总数  
  public   int   getTotalNum(){  
  return   this.Row_Num;  
  }  
   
  //返回   总页数  
  public   int   getPageNum(){  
  return   this.Page_Num;  
  }  
   
  }  
  <------------------------------------------------------>  
  test.java  
  测试  
  <------------------------------------------------------>  
  import   net.sf.hibernate.*;  
   
  import   java.util.ArrayList;  
  import   java.util.Iterator;  
  import   java.util.Collection;  
  import   java.util.List;  
   
  public   class   test   {  
   
  public   static   void   main(String[]   args)   {  
  try{  
  Session   session   =   HibernateUtil.currentSession();  
   
   
  StockIn   Si   =   new   StockIn();  
  OrgInfo   Oi   =   new   OrgInfo();  
  MainYjsj   MY   =   new   MainYjsj();  
  Object[]   ob   =   null;  
   
   
   
  net.sf.hibernate.Query   query   =   session.createQuery("from   OrgInfo   as   a,StockIn   as   b   where   b.OrgId=   a.OrgId   and     b.OrgId   like   '001%'   and   b.InDate>='2005-1-8'   and   b.InDate<='2005-7-8'");  
   
   
  Page   p   =   new   Page(query,10);   //参数2为页面显示记录行数  
   
  System.out.println("Row   Total   :"   +   p.getTotalNum());  
  System.out.println("Page   Total   :"   +   p.getPageNum());  
   
  Collection   pp   =   new   ArrayList();    
  pp   =   p.ChangePage(1);   //参数为要显示的页数  
  Iterator   si_iter   =   pp.iterator();  
   
  while(si_iter.hasNext()){  
  Si   =   (StockIn)si_iter.next();  
  System.out.println(Si.getCode());  
  MY   =   (MainYjsj)si_iter.next();  
  System.out.println(MY.getSpflmc());  
  }  
  HibernateUtil.closeSession();  
   
  }  
  catch(Exception   e){  
  e.printStackTrace();  
  }  
  }  
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值