[SPRING] Spring : ManyToOne 엔티티를 가져올 때 참조 엔티티 (OneToMany)가 JSON에 표시되지 않습니다.
SPRINGSpring : ManyToOne 엔티티를 가져올 때 참조 엔티티 (OneToMany)가 JSON에 표시되지 않습니다.
모든 하위 엔티티 (Town)를 가져 오기 위해 POSTMAN에서 GET 요청을 보내면 부모 엔티티 (Province)가 JSON 응답에 표시되지 않습니다.
이게 제 컨트롤러입니다.
@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입니다.
내 엔티티에 문제가 있습니까? 아니면 다른 것이 있습니까?
해결법
-
==============================
1.@JsonBackReference와 @JsonManagedReference를 교체하십시오. 원래:
@JsonBackReference와 @JsonManagedReference를 교체하십시오. 원래:
@JsonManagedReference private Province province; @JsonBackReference private List<Town> towns;
from https://stackoverflow.com/questions/39642650/spring-when-getting-a-manytoone-entity-reference-entity-onetomany-is-not-sho by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 최대 절전 모드에서 LIKE % 사용하기 (0) | 2019.05.18 |
---|---|
[SPRING] @Autowired with JUnit 테스트 (0) | 2019.05.18 |
[SPRING] Spring / Hibernate에서의 적절한 캐시 사용법 (0) | 2019.05.18 |
[SPRING] jQuery DataTables - DataTable을 다시 초기화 할 수 없습니다. (0) | 2019.05.18 |
[SPRING] Spring Cloud Stream 및 @Publisher 주석 호환성 (0) | 2019.05.18 |