开发者社区> 问答> 正文

在Dao层拼接语句报错,但是在数据库运行没有问题 <b>?报错

在Dao层拼接语句报错——数据库:sqlserver2008R2,whth pro as(select...很长就不写了),
这个跑断点测试一切正常,复制到数据库可以运行,但是在Dao层用父类封装的方法就会报错,
报错抛出的异常显示的语句被改变了,也搞不懂什么情况

展开
收起
爱吃鱼的程序员 2020-06-23 20:40:07 424 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    没图没源码没真相说个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的,毕竟那东西我真不熟。

    2020-06-23 20:40:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载