SELECT p FROM Processo p WHERE (:statusDefAutomatico is null OR p.statusDefAutomatico = :statusDefAutomatico)
Page<Processo> listarProcessos(@Param("statusDefAutomatico") Boolean statusDefAutomatico, Pageable pageable);
No caso a variavel statusDefAutomatico pode vir:
null - está funcionando
true - a consulta deve ser p.statusDefAutomatico is not null
false - a consulta deve ser p.statusDefAutomatico is null
os itens 2 e 3 não estão funcionando, porque a query tem que ser igual. Como desenvolver esta query ?
Estranho, pelo código, parece que está certo. Coloca para imprimir a consulta no console junto com os parâmetros e veja como a JPA está montando a query.
Se a variavel statusDefAutomatico vier com valor true, vai retornar todos os resultados com p.statusDefAutomatico = true e não todos os resultados com p.statusDefAutomatico is not null
Se a variavel statusDefAutomatico vier com valor false, vai retornar os resultados com p.statusDefAutomatico = false e não os resultados com p.statusDefAutomatico is null
Então porque estás a comparar o valor da variavel Boolean statusDefAutomatico com o da coluna String statusDefAutomatico?
O que queres deve ser algo assim
SELECT p
FROM Processo p
WHERE (((:statusDefAutomatico is null or :statusDefAutomatico = false) AND p.statusDefAutomatico is null) or (:statusDefAutomatico = true AND p.statusDefAutomatico is not null))
select *
from (
select distinct
processo0_.id_processo as id_processo1_111_,
processo0_.criado_por as criado_por2_111_,
processo0_.data_criacao as data_criacao3_111_,
processo0_.data_ultima_modificacao as data_ultima_modifi4_111_,
processo0_.modificado_por as modificado_por5_111_,
processo0_.id_usuario_responsavel_gravacao as id_usuario_respon14_111_,
processo0_.id_usuario_responsavel_ultima_alteracao as id_usuario_respon15_111_,
processo0_.data_alteracao_status as data_alteracao_sta6_111_,
processo0_.data_inativacao as data_inativacao7_111_,
processo0_.numero_processo as numero_processo8_111_,
processo0_.id_processo_pai as id_processo_pai16_111_,
processo0_.permite_recepcao_doc_digital as permite_recepcao_d9_111_,
processo0_.protocolo_legado_sanacao as protocolo_legado_10_111_,
processo0_.regional as regional11_111_,
processo0_.id_solicitacao_principal as id_solicitacao_pr17_111_,
processo0_.status_def_automatico as status_def_automa12_111_,
processo0_.id_status_processo as id_status_process18_111_,
processo0_.tipo_entrega as tipo_entrega13_111_
from
registro_jucesp.processo processo0_
where (? is null or processo0_.status_def_automatico=?)
)
where rownum <= ?