select emp from Emperor as emp wherer ...?? 前面那个select emp 和后面as emp 怎么能重名?应该是select emp.*吧

解决方案 »

  1.   

    还有你如果需要找主表的信息的话,应该这么写,select a.*,b.* from Emperor as a inner join fetch a.Dynasty as b where a.dynastyID = b.dynastyID  and a.dynastyID =:dynastyID ... 还有就是你写的Emperor ,Dynasty  ,dynastyID, Dynastyid 大小写要清楚,java代码是区分大小写的。
      

  2.   

    问题解决,改成这样就OK了.
    Query query2 = session.createQuery("select emp from Emperor as emp where emp.dynasty.dynastyID =:dynastyID order by emp.emperorID asc");楼上的哥们,你说的都不到点上.呵呵.
      

  3.   

    既然已经用了Hibernate那就通过配置来解决,你的情况在*.hbm.xml中一定已经配置了Emperor和Dynasty的关联(不过需要双向关联),根据你要的dynasty_id=2,通过session.get(Dynasty.class,new Integer(2));得到id为2的Dynasty对象,因为是双向关联,在Dynasty中一定会有一个Set包含所有的Emperor,直接调用这个Set不久全得到了吗?根本用不着什么hql语句。
      

  4.   

    看看Hibernate文档吧,很简单。
    http://www.redsaga.com/hibernate-ref/3.1.2/zh-cn/html/associations.html#assoc-bidirectional-m21
      

  5.   

    双向多对一关联 是最常见的关联关系。(这也是标准的父/子关联关系。) <class name="Person">
        <id name="id" column="personId">
            <generator class="native"/>
        </id>
        <many-to-one name="address" 
            column="addressId"
            not-null="true"/>
    </class><class name="Address">
        <id name="id" column="addressId">
            <generator class="native"/>
        </id>
        <set name="people" inverse="true">
            <key column="addressId"/>
            <one-to-many class="Person"/>
        </set>
    </class>
    ----------------------------------------
    这个么?我只是一个一对多呀.
      

  6.   

    hibernate in action 第七章Retrieving objects efficiently
      

  7.   

    hibernate in action 楼上的哥们,有中文版么?多谢了...
      

  8.   

    不用双线关联,只不过你要在Dynasty里面加一个Emperor的collection,然后找出这个Dynasty,从里面直接取出collection就可以了。不过好像在那里看到这样会影响效率。不知道是不是真的。