These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: OneToOne outer join in HQL Query
PostPosted: Fri Oct 16, 2009 11:52 am 
Newbie

Joined: Mon Aug 31, 2009 1:19 pm
Posts: 11
Hello, I have a HQL query like this:.

Code:
SELECT destino
FROM UnidadAlmacenamiento u
JOIN u.tipoUnidad.tiposSalida tipo
JOIN tipo.unidades destino
WHERE u = :origen
AND (destino.loteActual is null OR destino.loteActual.peso < destino.capacidad))


In UnidadAlmacenamiento Entity I have this @OneToOne:
Code:
   @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
   public Lote getLoteActual() {
      return loteActual;
   }


The problem is that Hibernate is not generating the sql query that I spect, using OUTER JOIN to get the loteActual property.
Hibernate generates this sql:

Code:
   
    select
        unidades4_.id as id20_,
        unidades4_.capacidad as capacidad20_,
        unidades4_.concurrentLock as concurre3_20_,
        unidades4_.loteActual_id as loteActual6_20_,
        unidades4_.nombre as nombre20_,
        unidades4_.tipoUnidad_id as tipoUnidad5_20_
    from
        UnidadAlmacenamiento unidadalma0_
    inner join
        TipoUnidad tipounidad1_ on unidadalma0_.tipoUnidad_id=tipounidad1_.id
    inner join
        TipoUnidad_TipoUnidad tipossalid2_ on tipounidad1_.id=tipossalid2_.tiposEntrada_id
    inner join
        TipoUnidad tipounidad3_ on tipossalid2_.tiposSalida_id=tipounidad3_.id
    inner join
        UnidadAlmacenamiento unidades4_ on tipounidad3_.id=unidades4_.tipoUnidad_id,
        Lote lote5_
    where
        unidades4_.loteActual_id=lote5_.id
        and unidadalma0_.id=?
        and (
            unidades4_.loteActual_id is null
            or lote5_.peso<unidades4_.capacidad
        )


The sql that I spect would be something like this:

Code:
    select
        unidades4_.id as id20_,
        unidades4_.capacidad as capacidad20_,
        unidades4_.concurrentLock as concurre3_20_,
        unidades4_.loteActual_id as loteActual6_20_,
        unidades4_.nombre as nombre20_,
        unidades4_.tipoUnidad_id as tipoUnidad5_20_
    from
        UnidadAlmacenamiento unidadalma0_
    inner join
        TipoUnidad tipounidad1_ on unidadalma0_.tipoUnidad_id=tipounidad1_.id
    inner join
        TipoUnidad_TipoUnidad tipossalid2_ on tipounidad1_.id=tipossalid2_.tiposEntrada_id
    inner join
        TipoUnidad tipounidad3_ on tipossalid2_.tiposSalida_id=tipounidad3_.id
    inner join
        UnidadAlmacenamiento unidades4_  on tipounidad3_.id=unidades4_.tipoUnidad_id
   left outer join
        Lote lote5_ on unidades4_.loteActual_id=lote5_.id
    where
        unidadalma0_.id=?
        and (
            unidades4_.loteActual_id is null
            or lote5_.peso<unidades4_.capacidad
        )


Could any one help me?

Regards,
Chiara


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.