本帖最后由 cstsl 于 2010-10-24 12:17:01 编辑

解决方案 »

  1.   

    你为什么不用Hibernate的对象导航了还有hql语句一定要这么写吗
      select * from t1,t2,t3 where t1.t2id = t2.id and t1.t3id = t3.id
    这样可行吗?最后用hibernate的对象导航简单
      

  2.   

    我是用配置文件做得  不知道怎么写导航??如果设置cascade是不行的 因为我插入多的一方的时候会把一的那方的值给置空!!<class name="com.model.t1" dynamic-update="true">
    <id name="fwid">
    <generator class="uuid"></generator>
    </id>
    <property name="shi"/>
    <property name="ting"/>
    <property name="fwxx"/>
    <property name="zj"/>
    <property name="title"/>
    <property name="dates"/>
    <property name="telephone"/>
    <property name="lxr"/>

    <many-to-one name="t2" column="userid" fetch="select"/>
    <many-to-one name="t3" column="jdid" fetch="select" />
    <many-to-one name="t4" column="lxid" fetch="select"/>
    </class>怎么写啊??
      

  3.   


    这条hql语句不行吧  因为到最后我要把它转换成t1表的类型显示出来 不能转换啊
      

  4.   

    select t1.*,t2.外键列名称,t3.外键列名, from t1,t2,t3 where t1.t2id = t2.id and t1.t3id = t3.id试试,如何不行,就用createSQLQuery好了,里面用jdbc语句
      

  5.   


    这条hql语句肯定不行! 因为对象里面哪来的“*”操作符啊!!!
    至于使用createSQLQuery 语句确实可以一次性把3个表的数据都查出来 但是我做循环的时候只能转换成一个表对象吧!!!也就是说只能转换成t1表的值循环  因为t1表里面有t2,t3表的外键!!!!!!
    所以要么用导航要么用left join fetch  如果还有别的情分享下..........
    在配置文件中使用导航小弟不是很会  所以麻烦各位大侠了............
      

  6.   


     from t1,t2,t3 where t1.t2id = t2.id and t1.t3id = t3.id
    查出来的是一个list,而这个list里比放过 list.get(0)里分别有t1,t2,t3三个对象!
    你在遍历的时候直接通过get方法,就能得到t1,t2,t3里面的值
      

  7.   

    我在这里为什么不能用导航啊? 有谁知道使用导航的啊  或者使用 left join fetch 的?? 最后我得到个list 直接就能转换成t1一个对象就可以了 没必要再把另外两个对象牵扯进来啊.......