现问题如下:
  学生表 sid(主键) ;sname;
  老师表 tid(主键) ;tname;
在老师类中 private Set<Student> students;  //对象组合
在老师的hbm.xml配置文件中配置
               <set name="students" table="STUDENT">
<key>
<column name="SID" />
</key>
<one-to-many class="com.icar.entities.Student" />
</set>
第一次运行后会在服务器中自动生成两张表,在teacher表中多加了一列 SID(外键)(但是在老师类中是没有这个属性的,只是数据库中通过映射配置的外键关联自动生成的一列)
那么  若现在我有老师的tid号想查找他的所有学生。该怎样写HQL语句或者用什么方法可以达到效果呢?
 

解决方案 »

  1.   

    按照你的配置,应该是student表中存在外键列SID引用teacher表的主键吧。
      

  2.   

    hql :select t.students  from Teacher t where t.id = tid;
      

  3.   


    反向生成有什么区别么? 现在我数据库里的Strudent表示 sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?
      

  4.   

    不是说HQL查询语句中没有select的么?
      

  5.   

    正好相反  是 student的sid列是主键 被 teacher 表引为外键  所以teacher表中多了一个列sid
      

  6.   


    反向生成有什么区别么? 现在我数据库里的Strudent表示 sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?区别在于实现方式不同,但是结果都是一样的,你到时候 老师类里面会有学生对象,这个不用我说吧
    还有,你们用过hibernate反向生成么? 或者用javaBean小工具也行  
    http://blog.csdn.net/wangpeng047/article/details/6877720
      

  7.   

    正好相反  是 student的sid列是主键 被 teacher 表引为外键  所以teacher表中多了一个列sid你确定?
      

  8.   


    反向生成有什么区别么? 现在我数据库里的Strudent表示 sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?区别在于实现方式不同,但是结果都是一样的,你到时候 老师类里面会有学生对象,这个不用我说吧
    还有,你们用过hibernate反向生成么? 或者用javaBean小工具也行  
    http://blog.csdn.net/wangpeng047/article/details/6877720没有用过诶,难道这种方式生成的 就不能查询吗?  
      

  9.   

    正好相反  是 student的sid列是主键 被 teacher 表引为外键  所以teacher表中多了一个列sid你确定?
    好吧 ,我搞反了  是tid的主键给了student做外键。现在问题是 我有存有tid的teacher对象,要查他的学生,该怎么查啊?
      

  10.   


    反向生成有什么区别么? 现在我数据库里的Strudent表示 sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?区别在于实现方式不同,但是结果都是一样的,你到时候 老师类里面会有学生对象,这个不用我说吧
    还有,你们用过hibernate反向生成么? 或者用javaBean小工具也行  
    http://blog.csdn.net/wangpeng047/article/details/6877720这个和正反向生成应该没什么关系的,我只是要用HQL语句根据teacher的tid去查询他的学生而已。
      

  11.   

    HQL 关系对象查询,利用实体对象来查询sql表 ,  你现在的结果是 单纯的Teacher类、单纯的Student类,两者没关系怎么查~
      

  12.   


    有啊 
    <set name="students" table="STUDENT">
     <key>
    <column name="TID" />
    </key>
    <one-to-many class="com.icar.entities.Student" />
    </set>
    有一对多映射,在运行之后,会在数据库的student表自动生成一列tid,问题是我的实体类里没有这一属性,那么我要是想用hql查询语句就不知道用什么条件判断了
      

  13.   

    还hibernate啊,抛弃多年了。mybatis才是王道。