tipo de informe de Excepción

mensaje no se Pudo escribir el contenido: no se pudo perezosamente inicializar una colección de papel: edu.waa.clasificados.dto.Usuario.productos, no se pudo inicializar el proxy – no hay período de Sesiones (a través de la cadena de referencia: java.util.ArrayList[0]->edu.waa.clasificados.dto.Usuario[«producto»]); excepciones anidadas es com.fasterxml.jackson.databind.JsonMappingException: no se pudo perezosamente inicializar una colección de papel: edu.waa.clasificados.dto.Usuario.productos, no se pudo inicializar el proxy – no hay período de Sesiones (a través de la cadena de referencia: java.util.ArrayList[0]->edu.waa.clasificados.dto.Usuario[«producto»])

descripción El servidor encontró un error interno que le impidieron cumplir con esta solicitud.

  • Por favor enviar el código de
InformationsquelleAutor Anand Godar | 2015-10-20

4 Comentarios

  1. 5

    Acabo de añadir el @JsonIgnore en la después de la @ManyToMany(fetch = FetchType.PEREZOSO, cascade = CascadeType.TODAS) las anotaciones. Se trabajó.
    Pero no sé por qué funcionó.

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "WISHLIST", joinColumns = {
            @JoinColumn(name = "userId", referencedColumnName = "id") }, inverseJoinColumns = {
                    @JoinColumn(name = "productId", referencedColumnName = "id") })
    @JsonIgnore
    private List<Product> products;
    • Anteriormente, la aplicación está tratando de recuperar los productos de la lista para formar el objeto json después de la sesión cerrada. Ahora se le está diciendo a Json parser ignorar la lista de productos no intente rellenar mientras que la construcción de la respuesta json. Así NP.
  2. 4

    El problema es su FetchType.perezoso. Cuando Jackson convierte la Entidad Usuario, trata de cargar los productos, pero la sesión de hibernate es cerrado.

    Por lo que la adición @JsonIgnore es una forma de resolver esto, pero cuando usted necesita el producto devuelto así, esta no es una opción.

    He encontrado esta respuesta que resuelve el mismo problema para mí y me dio pereza tipo cargado:
    https://stackoverflow.com/a/21760361

    La cosa buena acerca de esta solución es que usted todavía puede utilizar la carga diferida para los productos.

  3. 0

    Supongo que el controlador está fuera de la sesión de hibernate. (no @Transaccional). Pero su json lista quiere ser llenado fuera de ese período de sesiones. Pero hibernate lleno de proxy en lugar de los datos reales, y fuera de la sesión de hibernate no puede cargar los datos cuando intenta tener acceso. JsonIgnore no pregunte por los datos, por lo que funciona. O si desea que los Datos en el objeto json, hacer fetchtype con GANAS. Luego de hibernación de la carga de inmediato. Si desea que la lista sólo en casos especiales dejar PEREZOSO, pero acceder a él, a continuación, en la capa de servicio en un método especial , que tiene la anotación @transactional. Luego de hibernación es capaz de llenar la lista.

  4. 0

    También me llegó a través de el mismo problema. Acabo de añadir la anotación siguiente a mi clase de Entidad (Justo antes de la clase de entidad). Se hace el trabajo seguro.

    @Entity @Table(name="Country") @Proxy(lazy = false) public class Country {}

Dejar respuesta

Please enter your comment!
Please enter your name here