hibernate createSQLQuery查询问题

finalStringsql="select*fromclasstabasaleftjoinclasstabasbona.pid=b.cidwherea.dsid=?";

List<?>li=getHibernateTemplate().executeFind(newHibernateCallback<Object>(){

publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLException{

Queryquery=session.createSQLQuery(sql);

query.setInteger(0,dsid);

returnquery.list();

}

});

returnli;

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

最后将sql改成

finalStringsql="selecta.cid,a.catimg,a.dsid,a.pid,a.cname,b.fnamefromclasstabasaleftjoin(selectcidaspid,cnameasfnamefromclasstab)asbona.pid=b.pidwherea.dsid=?";

b表只取了2个要的字段

然后查询结果是正确的。

应该是hibernte查询的一个BUG,使用leftjoin同表查询会覆盖字段。

测试使用不同的表leftjoin没有同样的问题

相关推荐