读书人

hibernate createSQLQuery查询有关问题

发布时间: 2012-08-30 09:55:54 作者: rapoo

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 Server

热点推荐