2012-05-25 7 views
5

Tengo una relación padre-hijo con el conjunto de atributos falso falso, así que cuando obtengo la clase padre con una consulta obtengo sus hijos también.¿Es posible la carga lenta para una relación no perezosa en Hibernate?

Por lo general, es preferible cargar todo, padres e hijos, pero en un caso no necesito hacerlo.

¿Hay alguna manera de evitar buscar a los niños cuando obtengo el elemento primario sin alterar la relación floja = falsa?

+0

Por qué no simplemente cambiar el ¿La configuración de carga diferida de esta relación es "falsa"? ¿Existen restricciones o requisitos específicos que lo hagan dudar? – kyiu

Respuesta

4

No, no es posible. La única cosa que puede hacer si sólo hay un caso en que la asociación no debe ser exagerado es utilizar un DTO en lugar de su entidad, y el uso de proyecciones para recuperar sólo lo que quieres:

String hql = "select firstName, lastName from User u where ..."; 
List<Object[]> rows = session.createQuery(hql).list(); 
List<UserDTO> users = new ArrayList<UserDTO>(rows.size()); 
for (Object[] row : rows) { 
    users.add(new User((String) row[0], (String) row[1])); 
} 
return users; 
Cuestiones relacionadas