java - 在 spring 中使用多对一映射时获得无限的 Json 响应

标签 java json spring spring-boot jpa

我正在尝试在 spring 中创建两个实体之间的多对一映射。但是,当我尝试使用restController 获取值时,我得到

Java.lang.IllegalStateException: Cannot call sendError() after the response has been committed

错误和无限的 JSON 响应。添加 JSON 忽略可以解决此问题,但我的响应中根本没有得到该列。我不知道如何解决这个问题。请帮忙。提前致谢。

这是我的实体:

@Entity
@Table(name="tbl1")
public class Data {

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

    @Column(name = "customer")
    private String customer;



    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="data_id", insertable = true, nullable = false, updatable = false)
    private DataList dataList1;

}

@Entity
@Table(name="tbl2")
public class DataList {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="data_id")
    private Long dataId;



    @Column(name="user_name")
    private String userName;



    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER,mappedBy = "dataList1")
    private List<Data> data1;


}

存储库:

@Repository
@Transactional
public interface DataList extends JpaRepository<DataList,Long> {
}
@Repository
@Transactional
public interface Data extends JpaRepository<Data,Long> {
}

我的错误:Java.lang.IllegalStateException: Cannot call sendError() after the response has been committed

最佳答案

1) 一般来说,将 fetch = FetchType.EAGER 放在 @OneToMany 上并不是一种明智的做法。尝试将其设置为 LAZY。

2) 确保 Data 和 DataList 实体正确实现 equals()hashCode() 方法。

关于java - 在 spring 中使用多对一映射时获得无限的 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424524/

相关文章:

javascript - Angular 2从url获取json数据

c# - ReadAsAsync 从 Json 数据中获取空值?

java - GSON 默认日期序列化器是特定于语言环境的

java - Jersey + hibernate = NoSuchMethodError : org. objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor

java - 已部署的 war 文件未在 tomcat 管理器中启动

spring - 如何使用 Spring Data JPA + Spring Web MVC 避免 JSON 序列化中的延迟获取?

java - Spark 中的并发作业执行

c# - 如何更好地减少类依赖性以便更容易对其进行单元测试

java - EOFException 的奇怪行为

java - 如何将字符串转换为长字符串