Pregunta

Tengo una entidad A que tiene una clave externa de la entidad B:

entity A --> id, entity_a_name, foreign_key_entity_B 

Cuando llamo

return session.createCriteria(EntityA.class).list();  

Me da la propiedad de entityB dentro de la entidad A también. ¿Cómo puedo hacer que la carga perezosa para que no se cargue enityB si no es necesario?

¿Fue útil?

Solución

No está claro a partir de la descripción de qué tipo de relación que está hablando, pero si es Varios a uno o uno-a-uno, las cosas no son tan sencillas. Si A.entityB es anulable (no opcional) entonces Hibernate se ve obligado a ansioso-carga la relación con el fin de ver si la propiedad es nulo. Sólo mediante el marcado de la relación como no opcional (en cuyo caso Hibernate asume que no es nula, ya que es un error de otro tipo) puede que se cargue con pereza.

Otros consejos

  
      
  • @ LazyCollection : define la opción pereza en @ManyToMany   y asociaciones @OneToMany.   LazyCollectionOption puede ser TRUE   (La colección es perezoso y será   cargado cuando se accede a su estado),   EXTRA (la colección es perezoso   y todas las operaciones intentarán   evitar la carga de colección, esta   es especialmente útil para la gran   colecciones al cargar toda la   elementos no es necesario) y FALSO   (Asociación no perezoso)

  •   
  • @ Obtener : define la estrategia de recuperación utiliza para cargar el   asociación. FetchMode puede ser SELECT   (Un selecto se activa cuando el   asociación necesita ser cargado),   Subseleccionar (sólo disponible para   colecciones, utilizan una subselección   estrategia - por favor refiérase a la   Documentación de referencia para hibernar   más información) o JOIN (utilizar una   SQL JOIN para cargar la asociación   durante la carga de la entidad propietario). UNIRSE   anula cualquier atributo perezoso (un AS   sociación cargado a través de un JOIN   estrategia no puede ser perezoso).

  •   
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top