你只要配置好了a表和其他两个表的关系,然后直接查询a表就可以获得关联的所有数据。没有你想象的那么复杂,你应该是没有理解hibernate的作用,建议你去找一个例子来做一下比较容易理解

解决方案 »

  1.   

    使用联合抓取,如果三张表有联系 
    比如A B C ,B中含A的外键   C中含B的外键 
    hql比如:from  C c  join fech c.bb b join fetch b.aa a where  a.id=1
    如果是结果是一条记录的话,就用C c来接收
    如果是多条的话,就用List<C>来接收。
      

  2.   

    <class name="" table="busin_name" > 
     <composite-id name="comp_id" class="po的名称"> 
     <key-property name="id" column="id" type="java.lang.Long" length="10" /> 
     <key-property name="business_id" column="business_id" type="java.lang.Long" length="10" /> 
     </composite-id> 
     <many-to-one name="a" class="a" update="false" insert="false" > 
     <column name="id " /> 
     </many-to-one> 
     <many-to-one name="b" class="b" update="false" insert="false" > 
     <column name="business_ID" /> 
     </many-to-one> 
     </class>一个小范例,联合主键的写法
      

  3.   

    请问HQL 应该如何书写呢。查询 一个表的所有数据和另一个表的部分字段
      

  4.   

    查询部分字段的话可以在select * from table 在select 和 from 之间列出你要的字段就可以
      

  5.   

    Hibernate HQL 查询POJO部分字段
    在使用Hibernate的时候,有时候并不想将对象的所有字段都查询出来,尤其是对象在数据库中的数据比较大时,(比如存储一些图片或者二进制文件,因为特殊的业务需求,必须这样存),在使用对象的时候,并不是用这些lob字段,就不想将这些字段一起查询出来,可以在domain域的对象中加上想查询字段的构造函数,然后hql语句使用select new Object(构造字段) from Object where 条件;
    注意,在查询时,在from 后加上 from User as u,在构造函数中使用 u.name,u.等等。条件语句也是。public class User(){
    String id;
    String name;
    String age;
    String image;public User(String id,String name,String age){
    this.id = id;
    ...
    }
    }如果只想查询部分字段,HQL语句这样写:
    String hql = "select new User(u.id,u.name,u.age) from User as u where u.id = ?";
      

  6.   


    我理解你的意思了,还有个不是很清楚的地方 如果是多表的话select new( A.ID,A.NAME,B.salary
    c.xxx,c.xxxx...)....是不是要在pojo中写个新的class其中包括所有查询中的所有字段呢
    只能这么写么?
      

  7.   


    这条hql语句就是查询出 A,BC表的所有数据了吗?
      

  8.   

    好久没逛论坛了,一看好多问题。。
    如果要实现你那种要求的话,我感觉直接在hql里面写最简单的就行了,比如下面的例子//当不是查询全字段,或者是从两张表中联合查询数据时,返回的是一个数组:        Session session = HibernateSessionFactory.getSession();         Query query = session.createQuery("select a.id,b.title,b.username from A as a,B b");
            //这里的A,B依然是对象
            List list = query.list();//这里每一行都是一个1维数组        for(int i=0;i<list.size();i++)        {            Object []o = (Object[])list.get(i);  //转型为数组            int id = (Integer)o[0];  //和select中顺序的类型相对应,可以是类            String title = (String)o[1];            String username = (String)o[2];            System.out.println("id:"+id+" , "+"title"+title+" , "+username);        }        HibernateSessionFactory.closeSession(); 
    查询结果集的大小(Integer)session.createQuery("select count(*) from User").iterate().next();
    不知道可不可以帮助你,要是还是不行,恕老夫无能为力了。
      

  9.   

    如果实在不行,试试session.createSQLQuery("sql语句")
      

  10.   

    参考下下面的语句吧,大体上和SQL类似
    select 
             
    student0_.id as id1_0_,          
    course2_.id as id4_1_,          
    student0_.Sno as Sno1_0_,          
    student0_.Sname as Sname1_0_,          
    student0_.Sdept as Sdept1_0_, 
    student0_.Sage as Sage1_0_,          
    student0_.Ssex as Ssex1_0_,          
    student0_.Saddress as Saddress1_0_,          
    course2_.Cno as Cno4_1_,          
    course2_.Cname as Cname4_1_,          
    course2_.Ccredit as Ccredit4_1_     
    from 
             
    joblog.student student0_     
    left outer join          
    sc course1_ 
                  
    on student0_.id=course1_.sno     
    left outer join 
             
    joblog.course course2_ 
                  
    on course1_.cno=course2_.id     where 
            
     student0_.Sname='李XXX'