when I'm going to make a request to my api i got this erros: i try to found some question about it but not found any quaestion and answer that can aplicate in my case, i hope one of your can do that for me.
com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->digifred.arrecadacao.producaoPrimaria.model.Produtos["produtoPrincipal"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:269) ~[jackson-databind-2.7.4.jar:2.7.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter._handleSelfReference(BeanPropertyWriter.java:879) ~[jackson-databind-2.7.4.jar:2.7.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:666) ~[jackson-databind-2.7.4.jar:2.7.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) ~[jackson-databind-2.7.4.jar:2.7.4]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.7.4.jar:2.7.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:149) ~[jackson-databind-2.7.4.jar:2.7.4]
i use Spring boot aplication and angularJs in the front end .. look at my code:
my request to api:
carregarProdutos = function() {
$http({
method : 'GET',
url : '/user/produtos'
}).then(function(response) {
$scope.produtos = response.data;
$scope.idEntidade = response.data[0].entidade.idEntidade;
$scope.nomeEntidade = response.data[0].entidade.nome;
}, function(response) {
console.log(response.data);
console.log(response.status);
});
};
my controller
@RequestMapping(method = RequestMethod.GET, value = "/produtos")
public ResponseEntity<Collection<Produtos>> buscarTodosProdutos(HttpServletRequest request) throws Exception {
String idEntidadeCrypt = request.getHeader("DataBase");
Long idEntidade = Long.parseLong(Crypto.decode(idEntidadeCrypt));
Collection<Produtos> buscados = proService.buscarFiltro(idEntidade);
return new ResponseEntity<>(buscados, HttpStatus.OK);
}
and my class model:
@Entity
@Audited
@AuditTable(schema = "aud", value = "arr_produtos")
@EntityListeners(AuditingEntityListener.class)
@Table(name = "produtos", schema = "arr")
public class Produtos implements Serializable {
private static final long serialVersionUID = 4211612266058833945L;
@NotNull
@JoinColumn(name = "id_entidade")
@ManyToOne(/*cascade = CascadeType.ALL*/)
private Entidades entidade;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_produto")
private Long idProduto;
@Basic(optional = false)
@Column(name = "codigo_chave")
private String codigoChave;
@Column(name = "abreviatura")
private String abreviatura;
@JoinColumn(name = "id_produto_principal")
@ManyToOne
private Produtos produtoPrincipal;