Feeds de los foros

En la página principal de los foros encontrarás los enlaces al logo feed feed general y al de cada uno de los foros.

Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible

Buscar en el foro

Foro Persistencia

feed Foro Persistencia Foro: Persistencia

Nuevo Tema Nuevo Tema

Projection en hibernate 04/07/2009 21:09
anonymous

Hola a todos!!

Estoy intentando hacer una consulta con hibernate en la que queria realizar una proyección de campos de dos clases diferentes relacionadas (Tengo una clase Evento que tiene una entidad de la clase Fecha) Despues de realizar la consulta me he dado cuenta que si la instancia de Fecha que esta en Evento esta a null no obtengo los datos de Evento.

¿Existe alguna manera de obtener los campos de Evento aunque la instancia de Fecha este a null? Yo hago las consultas con Criteria, no se si eso tendra algo que ver.

#unapprove_message#
RE: Projection en hibernate 05/07/2009 00:13
Marioko

tienes que usar Left o Right joins para obtener los resultados esperados. 

por ejemplo si haces eso:

select evt.nombre, evt.fecha.dia from Evento evt where ......

 estaras creando un join comun entre evento y fecha en evt.fecha. Y eso obliga al motor de base de datos a trae los eventos Y fechas de las seleccion. En tu caso deberias hacer algo asi

select evt.nombre, f.dia from Evento evt left join evt.fecha f where .....

en este caso tambien se crea un join, pero que es obligario hacia la entidad (tabla) de la izquierda (Evento), es como dijeras: Dame el nombre de los eventos y el dia de la fecha si tiene. Entonces tendras resultado asi

NOMBRE   |    DIA

Evento 1       12
Evento 2       10
Evento 3       null
Evento 4       2

si usas right join en vez de left join obtendras los mismo resultados pero obligando a que fecha exista, aunque no tendria sentido en tu caso.

saludos y espero que hayas entendido

#unapprove_message#
RE: Projection en hibernate 05/07/2009 11:05
anonymous

Muchas gracias!!!

Tenias toda las razón. Poniendole el Left Join me devuelve las instancias como queria.

#unapprove_message#
#thread_expired#.
Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano