Spring Boot: Ошибка: невозможно вызвать sendError () после подтверждения ответа - PullRequest
0 голосов
/ 12 октября 2018

Я получаю эту ошибку. Невозможно вызвать sendError () после подтверждения ответа Может ли кто-нибудь помочь мне выяснить, почему?

    @Entity
    public class Product {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;

        @OneToOne(
                fetch = FetchType.LAZY,
                cascade = CascadeType.ALL
        )
        @JoinColumn(name = "details_id")
        private Details details;
//Getters and setters left out for brevity
    }


@Entity
public class Details {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String description;
    private float price;
    private float discount;
    @OneToOne(mappedBy = "details")
    private Product product;
}


@RestController
public class ProductController {
    @Autowired
    ProductRepository productRepository;

    @GetMapping("/getAllProducts")
    public Iterable<Product> getAllProducts(){
        return productRepository.findAll();
    }
}

   @RestController
public class DetialsController {
    @Autowired
    ProductRepository productRepository;

    @Autowired
    DetailsRepository detailsRepository;

    @PostMapping("/details")
    public Details addDetails(@RequestBody Details details) {
        Product newProduct = new Product();
        newProduct.setDetails(details);
        productRepository.save(newProduct);
        return detailsRepository.save(details);
    }
}

Я могу выполнить вызов POST для / details;для добавления деталей успешно.Но когда я выполняю вызов GET для / getAllProducts, я получаю эту ошибку Невозможно вызвать sendError () после подтверждения ответа

1 Ответ

0 голосов
/ 12 октября 2018

Это проблема с двунаправленными отношениями, поскольку они содержат ссылки друг на друга, при десериализации Джексон работает в бесконечном цикле.Моим первым предложением было бы добавить @JsonIgnore к одному концу отношения.

@OneToOne(mappedBy = "details")
@JsonIgnore
private Product product;

Впоследствии, если это решило вашу проблему, вы можете просмотреть @ JsonManagedReference / @ JsonBackReference и @ JsonIdentityInfo.

Вы также можете просмотреть эту ссылку для получения более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...