/ / Spring Rest servcie produce JSON pero no para objetos mapeados con un db - java, json, spring, rest, spring-mvc

El servicio Spring Rest produce JSON pero no para objetos mapeados con un db - java, json, spring, rest, spring-mvc

Me llevó horas darme cuenta de cuál es el problema:

Tengo un servicio Spring Rest y un método GET que devuelve a un usuario en formato JSON. Los datos provienen de mi base de datos a través de sessionFactory.

Después de la depuración resultó que el Problema está relacionado con mi relación bidireccional onetomany-manytoone.

Entonces llamando

        User user = (User) sessionFactory.getCurrentSession().load(User.class, userId);

devuelve un objeto de usuario donde user.getCity (). getSupplier () se encuentra con una excepción com.sun.jdi.InvocationException. Por lo tanto, Jackson obviamente no puede serializar. Pero, ¿qué causa esta excepción?

@Entity
@Table(name = "T_CITY")
public class City implements Serializable {

private static final long serialVersionUID = 1L;

@Id
private long id;

@OneToMany(mappedBy = "city", cascade=CascadeType.ALL)
private Set<User> user;

@OneToMany(mappedBy = "city", cascade=CascadeType.ALL)
private Set<Supplier> supplier;

Usuario:

@Entity
@Table(name = "T_USER")
public class User implements Serializable {

private static final long serialVersionUID = 1L;

public User() {
}

@Id
private long id;

@ManyToOne
private City city;

Proveedor:

@Entity
@Table(name = "T_SUPPLIER")
public class Supplier implements Serializable {

private static final long serialVersionUID = 1L;

@Id
private long id;

@ManyToOne
private City city;

Respuestas

0 para la respuesta № 1

Como se mencionó en la otra respuesta, creo que "lldescubra que sus problemas están relacionados con las relaciones x-to-x. Esto a veces puede crear problemas de referencia circular cuando se intenta jsonificar los beans de entidad.

A veces puede evitar o superar esto mediante anotaciones, otras veces se necesita una clase de contenedor. A menudo solo escribo una clase de contenedor para manejar mis transacciones JSON

Hay muchas referencias a este tipo de problemas que abarcan muchos idiomas. Aquí hay algunos puntos de partida para que investigue.