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没有同样的问题