我收到此错误。 提交响应后无法调用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);
    }
}

我可以对/ details进行POST调用; 成功添加详细信息。 但是当我对/ getAllProducts进行GET调用时,出现此错误响应已提交后无法调用sendError()

#1楼 票数:3 已采纳

这是双向关系的问题,因为它们相互引用,反序列化时,Jackson无限循环运行。 我的第一个建议是在关系的一端添加@JsonIgnore

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

之后,如果这解决了您的问题,则可以查看@ JsonManagedReference / @ JsonBackReference和@JsonIdentityInfo。

您也可以查看此链接以获得更多信息

  ask by user2991413 translate from so

未解决问题?本站智能推荐:

10回复

Spring-boot:需要一个无法找到的名为“entityManagerFactory”的bean

我正在使用 JPA 开发 Spring Boot 应用程序并遇到此错误。 我不确定我是否使用了正确的注释或缺少依赖项。 任何帮助将不胜感激。 这是错误信息 构建.gradle 应用程序属性 应用程序.java 用户服务.java UserServiceImpl.java 用户存储库.java 用户
1回复

无法在Spring中提交LocalTime列表

我有一个包含对象列表的实体(省略了 getter 和 setter 以及此示例的所有无关代码) 我有这个表格,允许用户选择多个小时.. 我的控制器: 当我提交表单时,我收到以下错误消息: 在我看来,它很难将 String[] 转换为 List,我该如何解决这个问题? 编辑:添加控制器类
1回复

Spring-boot双向关系或多个查询

我正在使用Spring Boot Web服务,我想知道处理实体之间关系的最佳方法。 第一种方法是使用双向关系,如下所示: 标题实体: TitleCelebrity实体: 因此,每次我请求获得标题时,我都会获得带有TitleCelebrity列表的Title,这就是我想要的。
1回复

使用GCPPubSub后无法提交事务JPARepositorySpring

我有一个 Spring Boot 应用程序,它在 GCP PubSub 队列上发送和接收消息。 基本上,我尝试将我在消息中获得的一些信息存储在数据库中。 但是,当我尝试提交此信息或 saveAndFlush() 时,我收到错误 RollbackException: Error while commi
1回复

如何在Spring-Boot项目中编辑Hibernate设置?

基本上我要做的是将此属性更改添加到hibernate,以便在所有属性值为null时启用复合/可嵌入对象的实例化: 我知道编辑Hibernate的常用方法是在application.properties文件中,如下所示: 但spring.jpa.properties.hibernate.c
2回复

spring-boot-starter-data-jpa@OneToMany在更新时不会插入新子项

家长: 孩子: 存储库: 坚持:更新 当我插入一个新的 A 对象时,一切正常,所有子项都很好地插入到数据库中。 但是当我从数据库加载一个 A 对象时,将一些子项添加到列表中然后更新该对象,这不会插入新的子项。 根据 CascadeType 的文档,所有人都应该插入它们。 知道如何解决这个问题吗?
1回复

在单元测试中带有spring-boot-starter-data-jpa的SpringBoot需要强制使用@DataJpaTest

我正在测试Spring Boot功能,作为该领域的新手。 我有一个具有基本依赖性的简单应用程序。 sping-boot-starter-parent 1.5.7 sping-boot-starter sping-boot-starter-data-jpa sping-b
5回复

Spring-boot是否通过@GeneratedValue改变了ids自动递增的工作方式?

Spring-Boot 2.0.0似乎修改了Hibernate的自动配置方式。 让我们假设两个简单且独立的 JPA 实体: 在此之前,使用Spring-Boot的1.5.10,我是能够产生自动递增的单独序列,这意味着我可以得到一个Car 1作为主键和Airplane以1作为主键也。 它们之间没有相