Consulta sql - hibernate - resolvido

10 respostas Resolvido
guilhermebhte

O projeto importa este projeto com.trg.search.Search

select * from ( select * from CL cl_ 
where cl_.ATIVO=1 
    and not (exists (select listacli1_.CLI_ID from CLI_FID listacli1_ 
    where cl_.CLI_ID=listacli1_.CLIENTE_ID and ( listacli1_.ATIVO=1) 
    and (listacli1_.EMPRESA_ID<>10 or listacli1_.EMPRESA_ID is null))) 
order by cliente0_.NOMBCLIENTE asc ) where rownum <= 10;

Mas quero que gere assim:

select * from ( select * from CL cl_ 
    where cl_.ATIVO=1 
        and (exists (select listacli1_.CLI_ID from CLI_FID listacli1_ 
        where cl_.CLI_ID=listacli1_.CLIENTE_ID and ( listacli1_.ATIVO=1) 
        and (listacli1_.EMPRESA_ID<>10 or listacli1_.EMPRESA_ID is null))) 
    order by cliente0_.NOMBCLIENTE asc ) where rownum <= 10;

Isto é sem o not, antes do and (exists

Classe:

clibusca.addFilterAll("listaClienteFidelidade", Filter.equal("emp.id", emp.getId()));

O que pode ser ?

10 Respostas

javaflex

Tem que debugar o que faz addFilterAll.

Pq nao faz seu próprio SQL pra nao ficar sempre dependente dessas mágicas?

darlan_machado

Eu entendo que o filtro foi incluído:

E equivale a esta parte da query

Porém, precisaria ver o trecho completo da montagem da consulta para entender por que do and not…

guilhermebhte

Só no último caso.

guilhermebhte

Esta parte where cl_.ATIVO=1

@JoinColumn(name = "CLI_ID", referencedColumnName = "CLI_ID")
@Where(clause = "activo=1")
private List<CliFid> listaCliFid;
guilhermebhte

Esta parte que eu não sei como foi incluido.

Sei que ele utilizar essa classe com.trg.search.Search

javaflex

Só com esse trecho de código que postou fica impossível saber.

guilhermebhte

A classe principal é Cli.

Tenho este atributo

@JoinColumn(name = CLI_ID, referencedColumnName = CLI_ID)

@Where(clause = activo=1)

private List listaCliFid;

A classe listaCliFid, tenho o atributo:

@OneToOne
@JoinColumn(name = "CLIENTE_ID")
private Cli cli;

O que faz a ligação e faz parte para esta consulta.

Aqui utiliza os métodos desta classe: https://github.com/thiagosoares/plus-framework/tree/master/generic-hibernate-dao/search/src/main/java/com/googlecode/genericdao/search

No caso o metodo addFilterAll, o que não está funcionando.

javaflex

Projeto parou em 2011. Cara, vai se livrando aos poucos disso. Usa SQL ou pelo menos HQL pra essa query específica, o resto vê depois.

guilhermebhte

Isso que eu percebi kkk

Vou mudar aqui e ve o que o pessoal acima fala.

guilhermebhte
Solucao aceita

O problema aqui, é o componente e não pude mudar.

mas foi ajustado usando outro

clienteBusqueda.addFilterIn("listaClienteFidelidade.empresa.empresaId", Arrays.asList(emp.getId()));

Criado 2 de março de 2020
Ultima resposta 3 de mar. de 2020
Respostas 10
Participantes 3