1
resposta

consulta jpql

fala pessoal blz?, fiquei na duvida em duvida na aula 6 de jpql, esta consulta em jpql

select m from Movimentacao m join m.categoria c where c = :pCategoria

fez a consulta certa, mas o hibernate logou 2 consultas

Hibernate: 
    select
        movimentac0_.id as id1_3_,
        movimentac0_.conta_id as conta_id6_3_,
        movimentac0_.data as data2_3_,
        movimentac0_.descricao as descrica3_3_,
        movimentac0_.tipo as tipo4_3_,
        movimentac0_.valor as valor5_3_ 
    from
        Movimentacao movimentac0_ 
    inner join
        Movimentacao_Categoria categoria1_ 
            on movimentac0_.id=categoria1_.Movimentacao_id 
    inner join
        Categoria categoria2_ 
            on categoria1_.categoria_id=categoria2_.id 
    where
        categoria2_.id=?
Hibernate: 
    select
        conta0_.id as id1_2_0_,
        conta0_.agencia as agencia2_2_0_,
        conta0_.banco as banco3_2_0_,
        conta0_.numero as numero4_2_0_,
        conta0_.titular as titular5_2_0_ 
    from
        Conta conta0_ 
    where
        conta0_.id=?

não teria como configurar o hibernate para ele gerar so um select ???

1 resposta

Olá Silva. Provavelmente você está chamando algum getConta() dessa movimentação. Se for isso mesmo, o que acontece é que a jpql por padrão é Lazy, então não executaria tudo em uma query sem haver necessidade, mas aí depois como é chamado um getConta() o hibernate vê que precisa pegar os dados dessa tabela e executa mais uma query. Se for realmente esse cenário que eu disse , seria só fazer um join fetch com a Conta. Caso não for isso, coloque mais do seu código pra gente te ajudar melhor :)