Pois não
StringBuilder sb = new StringBuilder("");
sb.append("SELECT TABELA ");
sb.append(" aitCad.numeroAIT, aitCad.placa, proc.numeroProcesso, proc.anoProcesso, ");
sb.append(" numAIT.codigo, numAIT.descricao, aitCad.codigoDesdobramento, aitCad.codigoEnquadramento, ");
sb.append(" proc.status, aitCad.dataInfracao, aitCad.dataLimiteCadastro, proc.dataCadastro, ");
sb.append(" proc.dataProcesso) FROM ProcessoAIT proc ");
sb.append(" INNER JOIN proc.aitNaoCadastrado aitCad ");
sb.append(" INNER JOIN aitCad.orgao org ");
sb.append(" INNER JOIN aitCad.municipioInfracao numAIT ");
sb.append(" WHERE 1 = 1 ");
Map<String, Object> params = new HashMap<String, Object>();
Aqui abaixo que dá o problema. Está perguntando se o numeroAIT for diferente de null.
O numeroAIT
está = ""
, que é diferente de null
.
Aí a clausula abaixo entra no SQL erroneamente.
if (numeroAIT != null) {
List<String> numerosAIT = AITPrefeituraUtils.getVariacoesAutoInfracao(numeroAIT);
sb.append(" AND aitCad.numeroAIT IN (:numerosAIT) ");
params.put("numerosAIT", numerosAIT);
}
PS: Quando passo o mouse encima da variável numeroAIT ela está com valor (" ") aspas duplas.
O Eclipse ou sei lá quem não admite null. Este parametro vem de uma chamada deste tipo:
public List<ProcessoAITNaoCadastradoVO> findProcAITNaoCadastrado(String numeroAIT, String placa,
Integer numeroProcesso, Integer anoProcesso, Long idMunicipioInfracao,
FiltroStatusProcAITNaoCadastrado status, Date dataInicialInfracao, Date dataDataFinalInfracao) {
List<ProcessoAITNaoCadastradoVO> procAitsNaoCadastrados = processoAITDAO.findProcAITNaoCadastrado(numeroAIT,
placa, numeroProcesso, anoProcesso, idMunicipioInfracao, status, dataInicialInfracao, dataDataFinalInfracao);
return procAitsNaoCadastrados;
}
Em todos os fontes de colegas aqui quando não se passa nada para a String ela fica como null, só comigo fica com aspas duplas.
Acho que eu tenho um “X” nas costas.