Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

371
Vistas
Jackson: excluye cada colección perezosa en las clases @Entity de la serialización

En mi proyecto Spring 4 con Hibernate 5 y una configuración basada en Java, sigo enfrentándome a la excepción "no se pudo inicializar el proxy, no hay sesión" cada vez que Jackson intenta serializar mi entidad con una colección perezosa. Parece que Jackson no verifica si la colección es perezosa y activa la carga, lo que genera la excepción. ¿Cómo hago para que Jackson evite la serialización de cada colección con carga diferida en cada @Entity-class y así evitar excepciones constantes y fallas con "sin sesión"? La solución de trabajo más simple. He leído muchos enfoques, ninguno de los cuales realmente resuelve este problema para mí. Cualquier ayuda será apreciada (¡no para Spring Boot!). Algún fragmento de código:

 @Data @Entity @ToString(exclude="questions") @Table(name = "theme") public class Theme { @Id @GeneratedValue(generator = "increment") @GenericGenerator(name = "increment", strategy = "increment") @Column(name = "id") private Long id; @Column(name = "title") private String title; @JsonInclude(JsonInclude.Include.NON_NULL) @OneToMany // LAZY by default @JoinColumn(name = "theme") private List<Question> questions;// = new ArrayList<>(); }

DAO

 public interface ThemeDAO extends CrudRepository<Theme, Long> { List<Theme> findAll(); }

La excepción va aquí (en el controlador):

 ObjectMapper objectMapper = new ObjectMapper(); result = objectMapper.writeValueAsString(theme);
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El complemento jackson-datatype-hibernate realmente resolvió el problema. Acabo de agregar HibernateAwareObjectMapper como una clase separada:

 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module; public class HibernateAwareObjectMapper extends ObjectMapper { public HibernateAwareObjectMapper() { registerModule(new Hibernate5Module()); }

}

Y luego anuló el método configureMessageConverters en la clase de configuración de MVC:

 @Configuration @EnableWebMvc @ComponentScan(basePackages = { "learning_session.controller" }) public class WebContext extends WebMvcConfigurerAdapter implements ApplicationContextAware { private ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new MappingJackson2HttpMessageConverter(new HibernateAwareObjectMapper())); super.configureMessageConverters(converters); } // more beans }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda