Java - Consulta HQL

 
Vista:

Consulta HQL

Publicado por Jaime Castillo Montes (17 intervenciones) el 06/01/2009 22:47:07
Buenas amigos, les comento que tengo un pequeño problema que no se como resolver, tengo dos clases:

public class A {
private int id;
private String nombre;
private String apellidoP;
private String apellidoM;
private B b;

//getters y setters........

}

public class B {
private int id;
private String nombre;
private String apellidoP;
private String apellidoM;

//getters and setters.......

}

dos tablas
Tabla:
A
Campos:
id, nombre, apellidoP, apellidoM, id_b

Tabla:
B
Campos:
id, nombre apellidoP, apellidoM

cuando hago la consulta de todos los registros de la clase A, me trae una lista de objetos A, pero en la clase A tengo un objeto B, pero este objeto no trae nada, esta en null, y necesito que venga tambien lleno, si alguien me puede ayudar con la consulta, por que no se como hacerla, en realidad no necesito que venga todo el objeto lleno, pero si necesito que venga el id del objeto B.
muchas gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta HQL

Publicado por Jaime Castillo Montes (17 intervenciones) el 07/01/2009 16:27:05
ayuda, ya intente con:

- from A

- select new A(a.id, a.nombre, a.apellidoP, a.apellidoM, a.b) from A a

- select a.id, a.nombre, a.apellidoP, a.apellidoM, a.b from A a

y sigue el mismo resultado, solo viene el objeto A lleno, pero el objeto B viene con todos sus atributos null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta HQL

Publicado por Christian Gonzales Komiya (1 intervención) el 07/01/2009 23:10:39
Espero ayudarte con esto

2 Soluciones :

1) usando left join fetch :

tu hql sería:

String hql = "select claseA from A claseA left join fetch claseA.b claseB"


2) usando lazy="false"

en el archivo hbm de A donde está el many-to-one, agregar el lazy="false" :
(bueno no se cual será el package por mientras [com.4cuatros.java])

<many-to-one name="b" class="com.4cuatros.java.B" fetch="join" lazy="false" >

y tu hql será :
String hql = " from A ";

si lo haces de esta forma, Hibernate hará un segundo query por debajo para traer "B" y lo hará cada vez que hagas select a "A".

¿cual es mejor? depende de tus necesidades, tal vez no siempre quieres que esté ligado a "B". Notarás que más veloz es de la primera forma.
Espero haberte ayudado. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta HQL

Publicado por Jaime Castillo Montes (17 intervenciones) el 07/01/2009 23:15:18
eit
muchas gracias por tu respuesta
se me habia olvidado ponerle solucionado a esto
si
efectivamente encontre la solucion que me dices, la segunda
agregue en los hbm
fetch="join" lazy="false"
y funciono correctamente

gracias de todos modos

hasta pronto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta HQL

Publicado por Nicolas (2 intervenciones) el 26/02/2009 01:58:37
Hola a todos, soy nuevo con hibernate, resulta que tengo una clase A que tiene relacion muchos a uno con otra clase B y otra relacion muchos a uno con otra clase C ( mirandolo desde la base de datos en la tabla a A figura el id de la tabla B y el id de la tabla C ). he podido insertar y modificar con hibernate en las tablas sin problemas, pero luego se me presentó la situacion de querer consultar todos los datos de la tabla A (junto con sus datos de la tabla B y C ) y que estos datos se mantengan relacionados, es decir que si modifico un dato, esta modificacion se guarde automaticamente. Mi problema radica en que estos tres objetos tienen que seguir relacionados en la grilla a la que traigo la consulta para que cuando modifique algun dato vaya a guardar en las 3 tablas de la BD.

Espero que se haya entendido algo.....,

desde ya muchas gracias,
Nicolás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta HQL

Publicado por guillermo (1 intervención) el 07/07/2011 01:47:43
buenas tardes, tengo que hacer una consulta en hql, la cual es:
alumno que tiene asigandos la mayor cantidad de cursos.

nose como hacerla en hql, llego a hacer que me muestre la cantidad de cursos por alumno, pero de ahi nose sacar el maximo:

@NamedQuery(name = "cantidadMateriaAlumno", query =
"select alu.dni, count(*) from Curso c join c.alumnos alu group by alu.dni ")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar