sql语句在数据库中运行正常,但在程序中报缺少右括号错误,求各位大神帮忙解答

含声不语 2017-05-15 09:10:05
@SuppressWarnings({ "rawtypes", "unchecked" })
public Page<CrmBoExp> findPageBySql2(String excontract, String sum,final int pageNum, final int pageSize) {
logger.debug("findPage CrmBo instance");
StringBuffer sb = new StringBuffer("select temp1.expsigncontract excontract, temp1.researcherList message, temp2.probudget sum "+
" from (SELECT expsigncontract, LTRIM(text, ',') researcherList"+
" FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY expsigncontract ORDER BY expsigncontract,lvl DESC) rn, expsigncontract, text"+
" FROM (SELECT expsigncontract,LEVEL lvl, SYS_CONNECT_BY_PATH(bmbm || probudget || '(万元)', ',') text"+
" FROM ( select sum(temp.probudget) probudget, temp.expsigncontract,temp.bmbm,ROW_NUMBER() OVER(PARTITION BY expsigncontract ORDER BY temp.expsigncontract, temp.bmbm) x"+
" from (select t.boid,"+
" t.state, t.probudget, to_char(t.expsigncontract, 'yyyy-mm') expsigncontract,t1.mc,"+
" (select s.mc from crm_deps s where s.bmbm = substr(t1.bmbm, 1, 4)) bmbm from crm_bo t"+
" left join crm_deps t1 on t.createuserdeptid = t1.obj_id where t.expsigncontract is not null) temp group by temp.expsigncontract, temp.bmbm"+
" order by temp.expsigncontract, temp.bmbm) a CONNECT BY expsigncontract = PRIOR expsigncontract"+
" AND x - 1 = PRIOR x)) WHERE rn = 1 ORDER BY expsigncontract) temp1"+
" left join ( select sum(temp.probudget) probudget, temp.expsigncontract"+
" from (select t.boid, t.state, t.probudget, to_char(t.expsigncontract, 'yyyy-mm') expsigncontract, t1.mc,"+
" (select s.mc from crm_deps s where s.bmbm = substr(t1.bmbm, 1, 4)) bmbm"+
" from crm_bo t left join crm_deps t1 on t.createuserdeptid = t1.obj_id) temp "+
" group by temp.expsigncontract"+
" order by temp.expsigncontract) temp2"+
" on temp1.expsigncontract = temp2.expsigncontract");
ArrayList<Object> value = new ArrayList<Object>();
if (!StringUtil.isNullOrEmpty(excontract)) {
sb.append(" where temp1.expsigncontract=?");
value.add(excontract);
}
if (!StringUtil.isNullOrEmpty(sum)) {
sb.append(" where temp2.probudget=?");
value.add(sum);
}
final Object values[] = value.toArray();
final String sql = sb.toString();
List list = hibernateDao.getPojoTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql);
if (values != null && values.length > 0) {
for (int i = 0; i < values.length; i++)
query.setParameter(i, values[i]);

}
List result = query.setFirstResult((pageNum - 1) * pageSize).setMaxResults(pageSize).list();
System.out.println(pageNum);
return result;
}
});
long recordCount = PageUtil.getCountBySql(hibernateDao.getPojoTemplate().getSessionFactory(), sql, values);//后台打印的时候这里出现错误

HResultSetExtractor hrs = new HResultSetExtractor(list, CrmBoSum.class);

Page page = Page.EMPTY;
try {
page = new Page(hrs.extract(),recordCount, pageNum, pageSize);
} catch (Exception e) {
e.printStackTrace();
logger.error("findPage CrmBo failed", e);
}
return page;
}
...全文
957 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
FatMouse111 2017-05-15
  • 打赏
  • 举报
回复
我也遇到过类似的情况 后台打印出来的sql放在数据库里能运行成功 但在后台运行就是有错 后来排查是合作方那边的服务器防火墙拦截了sql 他们给放开限制就好了 具体怎么操作的我就不大清楚了
含声不语 2017-05-15
  • 打赏
  • 举报
回复

这是我排好的sql代码,还有在数据库的运行结果

只是不知道为什么一放到程序中就不行了
zy_arhahaha 2017-05-15
  • 打赏
  • 举报
回复
只能把这个拼好的字符串打印出来慢慢找了,,
110成成 2017-05-15
  • 打赏
  • 举报
回复
我统计了下(有22个,)也有22个,说明数目是对的,应该是混乱了,建议你分段去检查,慢慢往上加去排查 另说一点,最后帮你解决的人,一定要好好谢谢, 这sql语句我眼的看的都疼。
云墨浅殇 2017-05-15
  • 打赏
  • 举报
回复
好吧,看错了
含声不语 2017-05-15
  • 打赏
  • 举报
回复
那是string Buffer的结尾括号好吧
云墨浅殇 2017-05-15
  • 打赏
  • 举报
回复
" on temp1.expsigncontract = temp2.expsigncontract"); 右括号放在双引号前面
合肥-歪歪 2017-05-15
  • 打赏
  • 举报
回复
我想知道就这么点数据,至于要写这么繁琐的sql嘛?项目数据库设计不考虑?看着我头都疼!!!求大佬给我解疑下!!!
zhujinqiang 2017-05-15
  • 打赏
  • 举报
回复
是拼接的sql有问题?
hersing 2017-05-15
  • 打赏
  • 举报
回复
把你最终执行的sql打印出来,放到数据库中查询试试,这样可以定位到哪一行sql有问题

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧