Java 错误:el operador不存在:数值=字符变化

Java 错误:el operador不存在:数值=字符变化,java,postgresql,jpa,Java,Postgresql,Jpa,我通过以下方式调用下一个查询: resultObject = em.createNativeQuery(sql) .setParameter(1, codEntidad) .setParameter(2, nroLote) .getResultList() ; (codEntidad,nroLote为整数),然后给出下一个错误: 内部异常:org.postgresql.util.psql异常:错误:el 运算符不存在:数值=字符变化 提示:Ningún oper

我通过以下方式调用下一个查询:

resultObject = em.createNativeQuery(sql)
    .setParameter(1, codEntidad)
    .setParameter(2, nroLote)
    .getResultList()
    ;
codEntidad
nroLote
为整数),然后给出下一个错误:

内部异常:org.postgresql.util.psql异常:错误:el 运算符不存在:数值=字符变化
提示:Ningún operador con el nombre y el tipo de los 议论文。我们需要解释一下 tipos.
职位:4539
错误代码:0

但是,当我复制结果查询并用数字替换“?”并在pgAdim中执行查询时,它工作正常

select c.nro_ci, c.nombre_completo, c.nro_operacion, c.moneda, c.nro_lote, 
   c.faja_inform, c.cod_entidad, sum(c.saldo_operacion) saldo_operacion, 
   sum(c.mto_capital) mto_capital, sum(c.val_int_adelantado) 
   val_int_adelantado, sum(c.int_dia_pago) int_dia_pago, 
   sum(c.monto_a_pagar) monto_a_pagar
 from (SELECT p.nro_documento nro_ci, p.nom_completo nombre_completo,
   c.operacion nro_operacion, s.nro_solicitud, s.cod_moneda moneda,
   sc.nro_cuota, sc.mto_capital saldo_operacion, sc.fec_vto_habil 
   fec_vencimiento, next_work_day3( CASE
                    WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN
                        last_day(sc.fec_vto_habil)
                    ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY') END) fec_pago,
   case
   when sc.fec_vto_habil > next_work_day3( CASE WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN last_day(sc.fec_vto_habil)
                                            ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY')
                                           END)
   then 0
   else next_work_day3( CASE
                        WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN
                            last_day(sc.fec_vto_habil)
                        ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY')
                       END) - to_date(to_char(sc.fec_vto_habil, 'DD/MM/YYYY'), 'DD/MM/YYYY')
   end dias_interes, sc.mto_capital, sc.val_int_adelantado,
   case
   when sc.fec_vto_habil > next_work_day3( CASE WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN last_day(sc.fec_vto_habil)
                                            ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY')
                                            END) 
   then round((sc.mto_capital * 0 * 21) / 36500)
   else round((sc.mto_capital * (next_work_day3(CASE WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN last_day(sc.fec_vto_habil)
                                                ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY')
                                                END) - to_date(to_char(sc.fec_vto_habil, 'DD/MM/YYYY'), 'DD/MM/YYYY')) * 21) / 36500)
   end int_dia_pago,
   case
   when sc.fec_vto_habil > next_work_day3( CASE WHEN to_char(sc.fec_vto_habil, 'MM') = '02' THEN last_day(sc.fec_vto_habil)
                                            ELSE to_date('30/'||to_char(sc.fec_vto_habil, 'MM/YYYY'), 'DD/MM/YYYY')
                                           END)
   then (sc.mto_capital - sc.val_int_adelantado) - round((sc.mto_capital * 0 
   * 21) / 36500)
   else
      (sc.mto_capital - sc.val_int_adelantado) - round((sc.mto_capital * 
        (next_work_day3( CASE WHEN to_char(sc.fec_vto_habil, 'MM') = '02' 
   THEN last_day(sc.fec_vto_habil)
                         ELSE to_date('30/'||to_char(sc.fec_vto_habil, 
   'MM/YYYY'), 'DD/MM/YYYY')
                         END) - to_date(to_char(sc.fec_vto_habil, 
   'DD/MM/YYYY'), 'DD/MM/YYYY')) * 21) / 36500)
   end monto_a_pagar, c.faja faja_inform, s.fec_insercion, c.nro_lote, c.cod_entidad
   FROM pr_solicitudes s, pr_sol_cuotas  sc, mi_com_cartera c, ba_personas p
   WHERE s.nro_solicitud  = c.nro_solicitud AND p.cod_persona = s.cod_persona
   AND sc.nro_solicitud = s.nro_solicitud AND sc.nro_cuota     <> 0) c 
  where c.cod_entidad = ?-->@COD_ENTIDAD and c.nro_lote    = ?-->@NRO_LOTE.
  group by c.nro_ci, c.nombre_completo, c.nro_operacion, c.moneda, c.nro_lote, c.faja_inform, c.cod_entidad order by 3;
选择c.nro_ci、c.nombre_completo、c.nro_operation、c.moneda、c.nro_lote、,
c、 faja_通知,c.cod_entidad,sum(c.saldo_operation)saldo_operation,
sum(c.mto_资本)mto_资本,sum(c.val_int_adelantado)
瓦卢·阿德兰塔多,和(c.int_dia_pago)int_dia_pago,
sum(c.monto_a_pagar)monto_a_pagar
从(选择p.nro_文档、p.nom_completo、p.nom_completo、p.nom_completo、,
c、 运营商nro_operacion,s.nro_Clarcud,s.cod_moneda moneda,
sc.nro_cuota,sc.mto_capital saldo_Operation,sc.fec_vto_habil
fec_vencimiento,下一个工作日3(案例
何时使用字符(sc.fec_vto_habil,'MM')='02'然后
最后一天(sc.fec\u vto\u habil)
其他至日期('30/')|至字符(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/yyyyy')结束),
案例
当sc.fec_vto_habil>next_work_day3(当to_char(sc.fec_vto_habil,'MM')='02'时,则为最后一天(sc.fec_vto_habil)
ELSE to_date('30/'| | to_char(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/YYYY'))
(完)
然后0
下一个工作日的其他情况(案例3)
何时使用字符(sc.fec_vto_habil,'MM')='02'然后
最后一天(sc.fec\u vto\u habil)
ELSE to_date('30/'| | to_char(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/YYYY'))
结束)-截止日期(截止字符(sc.fec_vto_habil,'DD/MM/YYYY'),'DD/MM/YYYY'))
位于阿德兰塔多州圣瓦卢国际圣瓦卢市圣瓦卢资本有限公司的end dias_Interest,
案例
当sc.fec_vto_habil>next_work_day3(当to_char(sc.fec_vto_habil,'MM')='02'时,则为最后一天(sc.fec_vto_habil)
ELSE to_date('30/'| | to_char(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/YYYY'))
(完)
然后四舍五入((sc.mto_capital*0*21)/36500)
else round((sc.mto_capital*)(下一个工作日3)(如果to_char(sc.fec_vto_habil,'MM')='02',然后是最后一天(sc.fec_vto_habil)
ELSE to_date('30/'| | to_char(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/YYYY'))
完)-截止日期(截止字符(sc.fec_vto_habil,'DD/MM/YYYY'),'DD/MM/YYYY'))*21)/36500)
在帕果市中心结束,
案例
当sc.fec_vto_habil>next_work_day3(当to_char(sc.fec_vto_habil,'MM')='02'时,则为最后一天(sc.fec_vto_habil)
ELSE to_date('30/'| | to_char(sc.fec_vto_habil,'MM/YYYY'),'DD/MM/YYYY'))
(完)
然后(sc.mto_capital-sc.val_int_adelantado)-轮((sc.mto_capital*0
* 21) / 36500)
其他的
(sc.mto_资本-sc.val_int_adelantado)-圆形((sc.mto_资本*
(下一个工作日第3天(to char(sc.fec_vto_habil,'MM')='02'
然后是最后一天(sc.fec\u vto\u habil)
其他截止日期('30/'| | | |至| char(sc.fec|u vto|u habil,
“MM/YYYY”),“DD/MM/YYYY”)
结束)-截止日期(截止字符),
‘DD/MM/YYYY’,‘DD/MM/YYYY’)*21)/36500)
完巴加尔山,c.faja fajaèuèu inform,s.fecèu insertion,c.nroèu lote,c.codèentidad
来自公关律师事务所、公关律师事务所资深大律师、律师事务所资深大律师、律师事务所资深大律师、律师事务所资深大律师
其中s.nro_claircud=c.nro_claircud和p.cod_persona=s.cod_persona
和sc.nro_claircud=s.nro_claircud和sc.nro_cuota 0)c
其中c.cod_entidad=?-->@cod_entidad和c.nro_lote=?-->@nro_lote。
按c.nro_ci、c.nombre_completo、c.nro_operacion、c.moneda、c.nro_lote、c.faja_Notify、c.cod_entidad订单3分组;
你写过“codEntidad,nroLote是整数”。
确保它们都不是
NULL
,因为JPA往往会错误转换
NULL

或者向参数中添加
CAST
,如下所示:

 WHERE c.cod_entidad = CAST(? AS integer) AND c.nro_lote = CAST(? AS integer)

无法使用PostgreSQL的
::
运算符进行此操作,因为在JPA中,冒号
标记参数名称的开头。

很难理解示例中发生了什么以及共享了什么。我不得不用谷歌翻译来理解你的问题。我看到了这个问题的其他几个例子。从本质上讲,您的键似乎需要一个整数,而您正在传递一个字符串,反之亦然。您可能需要转换它们以匹配查询所需的内容。“createNativeQuery”不接受JDBC样式的参数(
)。它接受编号参数(
?1
?2
,等等)。