在Dao层拼接语句报错——数据库:sqlserver2008R2,whth pro as(select...很长就不写了),
这个跑断点测试一切正常,复制到数据库可以运行,但是在Dao层用父类封装的方法就会报错,
报错抛出的异常显示的语句被改变了,也搞不懂什么情况
没图没源码没真相说个P
看看封装的方法是怎么写的,貌似这个是你不会用人家封装好的方法,问问项目组的同事就ok了
publicListfindBySQL(finalStringsql,Pagepage)
throwsSqlException
{
try
{
IntegertotalCount=Integer.valueOf(countBySQL(DAOUtils.convertToCountSql(sql)));
page.setTotalCount(totalCount);
finalintstart=page.getFirstResult();
finalintpageSize=page.getPageSize().intValue();
returngetHibernateTemplate().executeFind(newHibernateCallback(){
publicObjectdoInHibernate(org.hibernate.Sessionsession)throwsHibernateException,SQLException{Queryquery=session.createSQLQuery(sql);Listlist=query.setFirstResult(start).setMaxResults(pageSize).list();query.setFirstResult(start).setMaxResults(0);releaseSession(session);returnlist;}finalBaseDAOthis$0;privatefinalStringval$sql;privatefinalintval$start;privatefinalintval$pageSize;{this$0=BaseDAO.this;sql=s;start=i;pageSize=j;super();}}
);
}
catch(Exceptione)
{
thrownewSqlException(e.toString());
}
}
你的SQL语句呢。
其实吧,因为page内部存在selectcount(*)的方法,而我用withas这样就会导致selectcount(*)运行不出来,方法是这样封装的,无解,所以,其实我想问的是大神们都是怎么用withas来优化SQL的,毕竟那东西我真不熟。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。