我的代码中包含以下内容:
公司实体
@Entity
@Table(name = "company")
public class Company{
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
@JsonUnwrapped
private Set<User> users;
}
用户实体
@Entity
@Table(name="user")
public class User{
@ManyToOne(cascade = CascadeType.REFRESH)
@JoinColumn(name="company_id")
private Company company;
}
CompanyController
@GetMapping("/company")
public ResponseEntity<Object> getAllCompanies(){
List<Company> allCompanies = companyService.findAll();
return ResponseEntity.ok(allCompanies);
}
问题是当我/company
在浏览器中调用时,我得到的users
对象包括公司对象。像这样的东西
[
{
"id": 1,
"name": "company",
"users": [
{
"id": 14,
"firstName": "Yamen",
"lastName": "Nassif",
"company": {
"id": 1,
"name": "company",
"users": [
{
"id": 14,
"firstName": "Yamen",
"lastName": "Nassif",
"company": {
"id": 1,
"name": "company",
"users": [
...
当我getAllUsers公司和用户也在扩展时,情况也是如此。
我的数据库看起来还不错。
控制台中出现了无尽的错误,当然还有Stackoverflow错误。我怎样才能解决这个问题 ?
由于无限递归,您会遇到此错误。
Company
上有一个链接,User
并上User
有一个链接Company
。
您至少有两个选择:
例如
@GetMapping("/company")
public ResponseEntity<Object> getAllCompanies() {
List<Company> allCompanies = companyService.findAll();
List<CompanyDto> allCompanyDtoList = convertToCompanyDtoList(allCompanies);
return ResponseEntity.ok(allCompanyDtoList );
}
就个人而言,我更喜欢第二种选择,因为返回Entities并不是一个好习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句