问题描述
- Caused by: java.sql.SQLException: ORA-00911: 无效字符
-
if(stat){ sqlsb.append(" select * from ("); }else{ sqlsb.append("select count(*) from ("); } sqlsb.append("select bb.datetime datetime, sum(decode(bb.typevalue, '新入金', bb.inits, 0.0)) as inits1, " + " sum(decode(bb.typevalue, '还款本金', bb.inits, 0.0)) as inits2, " + " sum(decode(bb.typevalue, '赎回金额', bb.inits, 0.0)) as inits3, " + " sum(decode(bb.typevalue, '借款金额', bb.inits, 0.0)) as inits4, " + " sum(decode(bb.typevalue, '历史空闲资金', bb.inits, 0.0)) as inits5 from (select to_char(t.start_date, 'yyyy-MM-dd') datetime, " + " sum(t.amount) inits, '新入金' typevalue from p2p_investment_capitalinfo t where t.type = 02 " + " and t.status in (01, 02, 03) group by to_char(t.start_date, 'yyyy-MM-dd') " + " union all select to_char(t.create_date, 'yyyy-MM-dd') datetime, sum(t.split_capital) inits, " + " '还款本金' typevalue from clspuser.crf_p2p_capital_split_main t where t.capital_type = 1 " + " group by to_char(t.create_date, 'yyyy-MM-dd') union all select to_char(t.pay_date, 'yyyy-MM-dd') datetime," + " sum(t.amount) inits, '赎回金额' typevalue from p2p_investment_payinfodetail t where t.is_transfer is null" + " group by to_char(t.pay_date, 'yyyy-MM-dd') union all select to_char(t.match_date, 'yyyy-MM-dd') datetime," + " sum(t.amount) inits, '借款金额' typevalue from p2p_investment_capital_debt t where t.status != 06" + " and t.redempt_number is null group by to_char(t.match_date, 'yyyy-MM-dd') union all select to_char(t.start_date, 'yyyy-MM-dd') datetime," + " sum(t.amount - nvl(t.handled_amount, 0)) inits, '历史空闲资金' typevalue from p2p_investment_capitalinfo t where t.pri_number != 247478" + " and t.status in (01, 02) and t.type = 01 and t.investor_number != 165951 group by to_char(t.start_date, 'yyyy-MM-dd'))bb where 1=1" ); //创建时间段查询 if(null !=po.getStartAppDate()){ sqlsb.append(" and bb.datetime >= '"+po.getStartAppDate()+"'"); } if( null != po.getEndAppDate()) { sqlsb.append(" and bb.datetime <= '"+po.getEndAppDate()+"'"); } sqlsb.append(" group by bb.datetime order by bb.datetime desc);"); String sqlStr = this.getInternalAccountMoneyWarningsql(po,false); SQLQuery sq = this.getSession().createSQLQuery(sqlStr); 在oracle没有错 但是hibernate 执行sql出现Caused by: java.sql.SQLException: ORA-00911: 无效字符
解决方案
order by bb.datetime desc);"看着这最后一个;多余了,去掉试试
改成
order by bb.datetime desc)"
解决方案二:
SQLException一般是sql语句的问题
检查有没有误用全角符号,还有查询中有没有包含特殊字符,使用的代码页是否正确。
解决方案三:
在数据库执行代码没错,hibernate执行sql错了,最大可能就是因为你将这些语句拼的时候拼错了。。。
时间: 2024-09-01 14:28:24