Lucas_Camara 22 de nov. de 2021 1 like
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.
pmlm 22 de nov. de 2021 1 like
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
guilhermebhte 22 de nov. de 2021
Desculpe, este campo no banco de dados e na classe não é boolean. É um enum
@Enumerated ( EnumType . STRING )
@Column ( name = "STATUS_DEF_AUTOMATICO" )
private DomStatusDeferimentoAutomatico statusDefAutomatico ;
Solucao aceita
pmlm 22 de nov. de 2021 1 like
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 ))
guilhermebhte 22 de nov. de 2021
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 <= ?
Lucas_Camara 22 de nov. de 2021 1 like
Se vc pega essa consulta gerada, substitui as interrogações com as variações do parâmetro (passando null e preenchido), ela retorna corretamente?
guilhermebhte 22 de nov. de 2021
Porque o que vem do front é
null
true
false
Porque se for false, a consulta deve buscar todas as informações que este campo seja null
Porque se for true, a consulta deve buscar todas as informações que este campo seja not null
não consegui fazer chegar isso jpa
guilhermebhte 22 de nov. de 2021
Não @Lucas_Camara
acho que estou fazendo errado
pmlm 22 de nov. de 2021 1 like