Respondiendo en foros, me encontré una pregunta respecto a Hibernate.
Pregunta :
Tengo dos clases:
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
Respuesta :
1) usando left join fetch :
tu hql sería:
o
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])
y tu hql será :
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 la primera forma es más veloz.
el link del foro es Consulta HQL
Pregunta :
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
Respuesta :
1) usando left join fetch :
tu hql sería:
String hql = "select claseA from A claseA left join fetch claseA.b claseB";
o
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 class="com.4cuatros.java.B" lazy="false" fetch="join" name="b">
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 la primera forma es más veloz.
el link del foro es Consulta HQL
Comentarios
Pero si en su interior tiene un set, agregar en el hbm cascade="save-update".
Ejemplo:
<set name="roleMenuOptions" table="ROLE_MENU_OPTION" lazy="false" cascade="save-update">