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 № 1Como 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.
- Búsqueda relacionada con Google con respecto a referencias circulares en objetos de entidad
- Json y Java - Referencia circular
- Dependencias circulares con Jackson