final String sql = "select a.username,a.numberOfSolved,b.numberOfsubmit from "+
"(select u.userName,count(s.id) numberOfSolved from user u left outer join submit s "+
"on u.username = s.username and s.result='ACCEPTED'  group by u.username order by numberOfSolved desc) A,"
+"(select u.userName,count(s.id) numberOfsubmit from user u left outer join submit s "+
"on u.username = s.username group by u.userName) B where a.username=b.username  "+
"order by a.numberOfSolved desc";这个sql在mysql数据库中执行没有问题。
按照网上说的方法,我做如下处理:List rList = null;
rList = (List)getHibernateTemplate().execute(new HibernateCallback() { 
public List doInHibernate(final Session session) throws HibernateException { 
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("numberOfSolved", new org.hibernate.type.IntegerType());
query.addScalar("count(s.id)", new org.hibernate.type.IntegerType());
query.addScalar("numberOfsubmit", new org.hibernate.type.IntegerType());
return query.list();
  } 
}); 
可以在运行时还是报错:
ERROR org.hibernate.util.JDBCExceptionReporter - Column 'count(s.id)' not found.
不知道到底是什么原因呢?