<many-to-one name="TCompany" class="com.xaec.model.TCompany" fetch="join">
         <column name="COMPANY_ID" precision="22" scale="0"/>
        </many-to-one>
这样还是会生成N+1条SQL语句
这是我访问的方法
public PageUtil find(final String hql, final Object[] objs, int pageNo, int pageCount) {
PageUtil page = new PageUtil();
final int start = (pageNo-1)*pageCount;
final int length = pageCount;
List list = this.getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for(int i=0;i<objs.length;i++){
if(objs[i] instanceof Integer){
objs[i] = new Long((Integer)objs[i]);
}
  query.setParameter(i, objs[i]);
}
query.setFirstResult(start);
query.setMaxResults(length);
List list = query.list();
session.close();
return list;
}

});
page.setDateList(list);
String hqlCount=hql.replaceAll("(select).*?(from)|(from)","select count(*) from");
List listCount = this.getHibernateTemplate().find(hqlCount,objs);
Long count = (Long)listCount.get(0);
        page.setPageNo(pageNo);
        page.setRecordCount(count.intValue());
return page;
}