gpt4 book ai didi

java - 直接自引用导致循环(通过引用链: java. util.ArrayList[0]-

转载 作者:行者123 更新时间:2023-11-30 06:19:57 25 4
gpt4 key购买 nike

当我要向我的 api 发出请求时,我遇到了以下错误:我尝试找到一些有关它的问题,但没有找到任何可以适用于我的情况的问题和答案,我希望你们中的一个人可以为我做到这一点。

   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]

我在前端使用 Spring boot 应用程序和 angularJs ..看看我的代码:

我对 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);
});
};

我的 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);
}

和我的类(class)模型:

@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;

最佳答案

错误的哪一部分让您感到困惑? produtoPrincipal 字段引用对象本身,即 x.produtoPrincipal = x

当您导出到 JSON 时,它会变成无休止的 JSON:

{
"idProduto": 1,
"produtoPrincipal": {
"idProduto": 1,
"produtoPrincipal": {
"idProduto": 1,
"produtoPrincipal": {
"idProduto": 1,
"produtoPrincipal": ...

或者:

  1. 修复数据,使其不引用自身。

  2. 弄清楚您想要的 JSON 是什么,然后相应地更改代码,例如不包含“主体”的完整 Produtos 对象,仅包含标识符:

    {
    "idProduto": 1,
    "idProdutoPrincipal": 1
    }

关于java - 直接自引用导致循环(通过引用链: java. util.ArrayList[0]-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com