我正在尝试在 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/