春季:获取ManyToOne实体时,引用实体(OneToMany)不在JSON中显示 [英] Spring: When getting a ManyToOne entity, reference entity (OneToMany) is not showing in JSON
本文介绍了春季:获取ManyToOne实体时,引用实体(OneToMany)不在JSON中显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我在POSTMAN中发送GET请求以获取我的所有子实体(镇)时,父实体(省)未显示在JSON响应中.
When I send a GET request in POSTMAN to get all my child entity (Town) the parent entity (Province) is not shown in the JSON response.
这是我的控制器.
@RequestMapping(value ="api/v1/town",method = RequestMethod.GET)
public ResponseEntity<List<Town>> getAllTowns() {
List<Town> towns = townService.getAllTowns();
if(towns.isEmpty()) {
return new ResponseEntity<List<Town>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<Town>>(towns, HttpStatus.OK);
}
这些是我的实体.
父母阶级
@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<Town> 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<Town> getTowns() {
return towns;
}
public void setTowns(List<Town> towns) {
this.towns = towns;
}
}
儿童班
@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.
I was able to show something like this, but the Objects that I used are not Spring-data-jpa entities, just simple POJOs.
我的实体有问题吗?还是还有什么?
Is there any problem with my Entities? Or is there anything else?
推荐答案
交换 @JsonBackReference
和 @JsonManagedReference
.基本上:
@JsonManagedReference
private Province province;
@JsonBackReference
private List<Town> towns;
这篇关于春季:获取ManyToOne实体时,引用实体(OneToMany)不在JSON中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文