hibernate多表查询


二张表分别为用户表(users)和贴子表(notes),其中users中的userid是notes表的外键,users跟notes是一对多,多对一关系,由myEclpise自动生成映射文件
Users.hbm.xml


代码
        ......

        
            
               
            

            
        


      ......

Notes.hbm.xml


代码
       ......

        
            
        


      ......

注意:如果多表查询,在写HQL语句时取notes的userid字段不能写notes.userid(这个问题下午我查了好久,才找到原因的)

HQL语句:From Notes notes,Users users WHERE notes.users=users.userid AND notes.issubject=1

又一注意点:该查询结果为存放对象数组的list集,可以用以下代码测试


代码
                      page=ins.listSubjects(page);//page是我的分页类,并存放了查询后的返回结果
                List list=page.getResult();
                System.out.println(page.getPageToolBar());
                for(int i=0;i                        Object[] obj=(Object[])list.get(i);
                        for(int j=0;j                                if(obj[j] instanceof Notes){
                                        Notes note=(Notes)obj[j];
                                        System.out.print(note.getTitle());
                                       
                                }else if(obj[j] instanceof Users){
                                        Users user=(Users)obj[j];
                                        System.out.print(user.getUsername());
                                }
                        }
                        System.out.println();
                }

在jsp页面显示结果的时候我觉得用EL表达式会简单的多,如:


代码

               


                        
                        
                                

                                       
                                       
                                       
                                
                        
                        
               

                                       
                                                主题:${objs[0].title}
                                       

                                       

                                        作者:${objs[1].username}
                                       

                                        发贴时间:${objs[0].addtime}
                                       

               
        

你可能感兴趣的:(hibernate,class,object,list,filter,border)