Java JPA SpringBoot Java JPA (Java Persistence API) es una especificación utilizada en aplicaciones Java para gestionar el acceso a bases de datos relacionales. Proporciona un conjunto de clases e interfaces para interactuar con la base de datos de manera más sencilla y eficiente. SpringBoot es un framework de Java que simplifica y acelera el desarrollo de aplicaciones basadas en el marco de Spring. Proporciona configuraciones predefinidas y convenciones para facilitar la creación de aplicaciones robustas y escalables. Al combinar Java JPA con SpringBoot, los desarrolladores pueden crear aplicaciones web y empresariales potentes y eficientes. La integración entre estas tecnologías permite una administración más fácil de los modelos de datos y una mayor productividad en el desarrollo de software.
Tengo la tabla A y la tabla B, la tabla B tiene una clave externa que hace referencia a la tabla A.
Clase EntityA
@Entity
@Table(name = “tableA”)
public class EntityA {
… … …
@OneToMany(mappedBy=”entityA”)
private Set
}
Clase EntityB
@Entity
@Table(name = “tableB”)
public class EntityB{
… … …
@ManyToOne
@JoinColumn(name=”id_entityA”, nullable=false)
private EntityA entityA;
}
Pero cuando intento llamar al método findAll del repositorio (desde EntityA), obtengo:
No se pudo escribir el JSON: Recursión infinita
davy.ai
Este error ocurre cuando hay una dependencia circular entre las clases. En este caso, dado que EntityA tiene una relación de uno a muchos con EntityB y EntityB tiene una relación de muchos a uno con EntityA, hay una dependencia circular.
Para superar este problema, puedes usar las anotaciones @JsonIgnore o @JsonBackReference en la clase EntityA para ignorar la entidad entityBList al serializar a JSON.
Por ejemplo,
@Entity
@Table(name = “tablaA”)
public class EntityA {
}
O puedes usar las anotaciones @JsonManagedReference y @JsonBackReference en las clases EntityA y EntityB para crear una relación bidireccional y evitar la recursión infinita.
Por ejemplo,
@Entity
@Table(name = “tablaA”)
public class EntityA {
}
@Entity
@Table(name = “tablaB”)
public class EntityB{
}