以下代码,我实例化后的list,t2的两个字段( t2.id2, t2.name2)全是null,而该语句放在pl/sql里搜出来字段都是有值的。请问原因是不是t1.hbm.xml没有对t2的映射?该怎么改?public List<t1> findT1() {
    String strSql = "SELECT t1.*, t2.id2, t2.name2 FROM t1 LEFT JOIN t2 ON t1.id1=t2.id2
";
    Session oSess = this.getHibernateTemplate().getSessionFactory().openSession();
    SQLQuery oQuery = oSess.createSQLQuery(strSql);
    oQuery = oQuery.addEntity(t1.class);
    List list = oQuery.list();
    oSess.close();
    return list;
}public class t1 implements java.io.Serializable {
     private static final long serialVersionUID = 1L;
     private Integer id1;
     private String name1;
     private Integer id2;
     private String name2;
     ( 各种get & set ……)
}t1.hbm.xml中只映射了t1的字段,不知道该怎么映射t2的表和字段
 <hibernate-mapping>
  <class name="com.bean.t1" table="T1">
        <id name="id1" type="integer">
            <column name="ID1" precision="22" scale="0" />
            <generator class="native" />
        </id>
        <property name="name1" type="string">
            <column name="NAME2" />
        </property>
     </class>
</hibernate-mapping>

解决方案 »

  1.   

    补充:t1.hbm.xml 和 t2.hbm.xml 中分别只映射了各字表的字段,看了一些零星的资料说是要用 many-to-one 配置,暂时还没找到完整的资料,所以还没来得及试
      

  2.   

    关联关系 如果你查询的时候用到了连接的时候才用 单表查询你要查t2你就配置t2表的po文件啊 就是写个class t2配置好相应的get set 然后去查询呗
      

  3.   

    另外建一个中间类,比如是 QueryT1T2.java
    public class QueryT1T2 implements java.io.Serializable {
         private static final long serialVersionUID = 1L;
         private Integer id1;
         private String name1;
         private Integer id2;
         private String name2;
         
        getters & setters…… 
     }
    查询时:
    createSqlQuery(Sql).addScalar("id1").addScalar("name1").addScalar("id2").addScalar("name2")
    把字段一个一个加进去