Gilberto C Andrade created DELTASPIKE-1470:
----------------------------------------------

             Summary: PSQLException: ERROR: syntax error at or near ")" when 
using IN clause and empty list
                 Key: DELTASPIKE-1470
                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1470
             Project: DeltaSpike
          Issue Type: Improvement
      Security Level: public (Regular issues)
          Components: Data-Module, JPA-Module
    Affects Versions: 1.9.4
            Reporter: Gilberto C Andrade


I'm getting this exception every time one query, that uses IN clause, receives 
an empty parameter:


{code:java}
// 
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] 
(Eclipse Persistence Services - 2.7.7.v20200504-69f2c2b80d): 
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERROR: syntax error at 
or near ")"
  Posição: 396
Error Code: 0
Call: SELECT titulo_cobranca_id, ACEITE, codigo_movimento_remessa, 
codigo_movimento_retorno, documento, dt_documento, dt_efetivacao_credito, 
dt_emissao, dt_ocorrencia, dt_vencimento, especie, valor_juro, 
motivo_ocorrencia, valor_multa, nosso_numero, situacao, valor, 
valor_juros_multa_encargos, valor_pago, valor_tarifa, conta_bancaria_id, 
pagador_id FROM gace.titulo_cobranca WHERE (nosso_numero IN ())
Query: ReadAllQuery(referenceClass=TituloCobranca sql="SELECT 
titulo_cobranca_id, ACEITE, codigo_movimento_remessa, codigo_movimento_retorno, 
documento, dt_documento, dt_efetivacao_credito, dt_emissao, dt_ocorrencia, 
dt_vencimento, especie, valor_juro, motivo_ocorrencia, valor_multa, 
nosso_numero, situacao, valor, valor_juros_multa_encargos, valor_pago, 
valor_tarifa, conta_bancaria_id, pagador_id FROM gace.titulo_cobranca WHERE 
(nosso_numero IN ?)")
    at 
org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException(QueryImpl.java:391)
    at 
org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:264)
    at 
org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:482)
    at org.apache.openejb.persistence.JtaQuery.getResultList(JtaQuery.java:87)
    at 
org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory$ListResultQueryProcessor.executeQuery(QueryProcessorFactory.java:96)
    at 
org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext.executeQuery(CdiQueryInvocationContext.java:253)
    at 
org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder.execute(AnnotatedQueryBuilder.java:51)
    at 
org.apache.deltaspike.data.impl.builder.QueryBuilder.executeQuery(QueryBuilder.java:57)
    at 
org.apache.deltaspike.data.impl.builder.AnnotatedQueryBuilder$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/builder/AnnotatedQueryBuilder.java)
    at 
org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeNonTransactional(TransactionalQueryRunner.java:62)
    at 
org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:57)
    at 
org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner$$OwbNormalScopeProxy0.executeQuery(org/apache/deltaspike/data/impl/tx/TransactionalQueryRunner.java)
    at 
org.apache.deltaspike.data.impl.handler.QueryHandler.process(QueryHandler.java:151)
    at 
org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:130)
    at 
org.apache.deltaspike.data.impl.handler.QueryHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/data/impl/handler/QueryHandler.java)
    at 
org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.proceed(DeltaSpikeProxyInvocationHandler.java:97)
    at 
org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler.invoke(DeltaSpikeProxyInvocationHandler.java:78)
    at 
org.apache.deltaspike.proxy.spi.invocation.DeltaSpikeProxyInvocationHandler$$OwbNormalScopeProxy0.invoke(org/apache/deltaspike/proxy/spi/invocation/DeltaSpikeProxyInvocationHandler.java)
    at 
br.gov.to.bem.gace.repository.TituloCobrancaRepository$$DSPartialBeanProxy.findAllByNossoNumero(Unknown
 Source)
    at br.gov.to.bem.gace.service.RetornoService.gerar(RetornoService.java:191)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
    at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
    at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
    at 
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:191)
    at 
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:102)
    at jdk.internal.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
    at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
    at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
    at 
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
    at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:252)
    at 
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:212)
    at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:265)
    at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:260)
    at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:89)
    at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:349)
    ... 67 common frames omitted
Caused by: org.eclipse.persistence.exceptions.DatabaseException: 
Internal Exception: org.postgresql.util.PSQLException: ERROR: syntax error at 
or near ")"
  Posição: 396
Error Code: 0
 {code}
{code:java}
@Query("SELECT e FROM TituloCobranca e WHERE e.nossoNumero IN :identificadores")
public List<TituloCobranca> findAllByNossoNumero(@QueryParam("identificadores") 
List<String> identificadores);{code}
Maybe checking if the parameter is null before the execuction could solve this 
problem.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to