Spring:获取ManyToOne实体时,引用实体(OneToMany)未显示在JSON中
当我在POSTMAN中发送GET请求以获取我的所有子实体(Town)时,父实体(省)未显示在JSON响应中。
这是我的控制器。
@RequestMapping(value ="api/v1/town",method = RequestMethod.GET) public ResponseEntity<List> getAllTowns() { List towns = townService.getAllTowns(); if(towns.isEmpty()) { return new ResponseEntity<List>(HttpStatus.NO_CONTENT); } return new ResponseEntity<List>(towns, HttpStatus.OK); }
这些是我的实体。
家长class
@Entity @Table(name = "PROVINCE") public class Province { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "PROVINCE_ID") private long id; private String name; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "province", targetEntity = Town.class) @JsonManagedReference("Province-Town") private List towns; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getTowns() { return towns; } public void setTowns(List towns) { this.towns = towns; } }
儿童class
@Entity @Table(name = "TOWN") public class Town { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "TOWN_ID") private long id; private String name; @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name = "PROVINCE_ID") @JsonBackReference("Province-Town") private Province province; private long kilometer; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Province getProvince() { return province; } public void setProvince(Province province) { this.province = province; } public long getKilometer() { return kilometer; } public void setKilometer(long kilometer) { this.kilometer = kilometer; } }
我得到的回应是这样的
{ "id" : 1, "name" : "Some Town", "kilometer" : 350 }
我期待的是
{ "id" : 1, "name" : "Some Town", "province" : { //Province data..... } "kilometer" : 350 }
我能够显示这样的东西,但我使用的对象不是Spring-data-jpa实体,只是简单的POJO。
我的实体有什么问题吗? 还是还有别的吗?
交换@JsonBackReference
和@JsonManagedReference
。 基本上:
@JsonManagedReference private Province province; @JsonBackReference private List towns;