hibernate createSQLQuery查询问题

final String sql="select * from classtab as a left join classtab as b on a.pid = b.cid  where a.dsid=?";

List<?> li= getHibernateTemplate().executeFind(new HibernateCallback<Object>(){
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                  
                   Query query=session.createSQLQuery(sql);                    
                   query.setInteger(0, dsid);
                   return query.list();
            }                      
        });             
      
        return li ;


返回的结果跟在查询分析器里面的结果不一致

最后将sql改成
final String sql="select a.cid,a.catimg,a.dsid,a.pid,a.cname,b.fname from classtab as a left join (select cid as pid,cname as fname from classtab) as b on a.pid = b.pid  where a.dsid=?";

b表只取了2个要的字段
然后查询结果是正确的。
应该是hibernte查询的一个BUG,使用left join同表查询会覆盖字段。
测试使用不同的表left join没有同样的问题

你可能感兴趣的:(sql,Hibernate)