Tenho esta consulta
@Query(value = "SELECT DISTINCT new Categoria(c.id, c.nome, c.metadadoAuditoria.statusDoRegistro, c.tipoCategoria, s, s.nome) FROM InsumoLoja e LEFT OUTER JOIN e.insumo i LEFT OUTER JOIN i.grupo g RIGHT OUTER JOIN g.categoria c LEFT OUTER JOIN c.setor s WHERE (UPPER(c.nome) LIKE :nome or :nome is null) AND (e.loja.id = :idLoja or :idLoja is null) ")
Page<Categoria> pesquisarRetornandoCategoria(@Param("nome") String nome, @Param("idLoja") Long idLoja, Pageable pageable);
Gerou esta consulta, o que traz o resultado correto
select distinct categoria3_.PK_CATEGORIA as col_0_0_, categoria3_.DS_NOME as col_1_0_, categoria3_.ST_REGISTRO as col_2_0_, categoria3_.ST_CATEGORIA_TIPO as col_3_0_, setor4_.PK_SETOR as col_4_0_, setor4_.DS_NOME as col_5_0_ from TAB_INSUMO_LOJA insumoloja0_ left outer join TAB_INSUMO insumo1_ on insumoloja0_.FK_INSUMO=insumo1_.PK_INSUMO left outer join TAB_GRUPO grupo2_ on insumo1_.FK_GRUPO=grupo2_.PK_GRUPO right outer join TAB_CATEGORIA categoria3_ on grupo2_.FK_CATEGORIA=categoria3_.PK_CATEGORIA left outer join TAB_SETOR setor4_ on categoria3_.FK_SETOR=setor4_.PK_SETOR where (upper(categoria3_.DS_NOME) like ? or ? is null) and (insumoloja0_.FK_LOJA=? or ? is null) order by categoria3_.DS_NOME asc offset 0 rows fetch next ? rows only
Só que o count, gera errado no meu ponto de vista aqui traz 413 e só tem 17
gera assim:
select count(distinct insumoloja0_.PK_INSUMO_LOJA) as col_0_0_ from TAB_INSUMO_LOJA insumoloja0_ left outer join TAB_INSUMO insumo1_ on insumoloja0_.FK_INSUMO=insumo1_.PK_INSUMO left outer join TAB_GRUPO grupo2_ on insumo1_.FK_GRUPO=grupo2_.PK_GRUPO right outer join TAB_CATEGORIA categoria3_ on grupo2_.FK_CATEGORIA=categoria3_.PK_CATEGORIA left outer join TAB_SETOR setor4_ on categoria3_.FK_SETOR=setor4_.PK_SETOR where (upper(categoria3_.DS_NOME) like ? or ? is null) and (insumoloja0_.FK_LOJA=? or ? is null)
devendo ser assim, porque traz 17 registros
select count(distinct categoria3_.PK_CATEGORIA) as col_0_0_ from TAB_INSUMO_LOJA insumoloja0_ left outer join TAB_INSUMO insumo1_ on insumoloja0_.FK_INSUMO=insumo1_.PK_INSUMO
left outer join TAB_GRUPO grupo2_ on insumo1_.FK_GRUPO=grupo2_.PK_GRUPO
right outer join TAB_CATEGORIA categoria3_ on grupo2_.FK_CATEGORIA=categoria3_.PK_CATEGORIA
left outer join TAB_SETOR setor4_ on categoria3_.FK_SETOR=setor4_.PK_SETOR where (upper(categoria3_.DS_NOME) like ? or ? is null)
and (insumoloja0_.FK_LOJA=? or ? is null)
O que pode ser ?