优化回答休息springboot/jhipster
Optimization answering rest springboot/jhipster
奇怪的事情发生了。我使用 jhipster 方法调用 getAll 对象实例的其余服务。调试我看到对象已满,这是填充了其他实体的外键。
例如,实体汽车有一个公司外键指向生产汽车的公司。所以我看到了:
return ResponseEntity.ok().headers(headers).body(page.getContent());
page.getContent() 有公司 1、52、1 的 3 辆车组成的数组(所以我看到 car1.getFirm().getDescription()==> "XXX", " YYY”,“XXX”)。没关系。但是当我看到 json 到达我的浏览器时,我看到“XXX”、“YYY”、null。扩展,我在同一请求的其他响应记录中看不到任何关于已“使用”的公司。
知道为什么会这样吗?
P.S。这里是休息服务的代码,我在 System.out 中看到正确的描述:
@GetMapping("/cars")
public ResponseEntity<List<Car>> getAllCars(CarCriteria criteria, Pageable pageable) {
log.debug("REST request to get Cars by criteria: {}", criteria);
Page<Car> page = carQueryService.findByCriteria(criteria, pageable);
System.out.println("---------------------------------------------");
for (Car car:page.getContent()) {
System.out.println(car.getIdFirm().getDescription());
}
System.out.println("---------------------------------------------");
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
return ResponseEntity.ok().headers(headers).body(page.getContent());
}
如果关系是 Hibernate lazy-loaded,当您在控制台或调试器下打印它们时,您加载它们并且它们是非空的。通过将 show_sql
设置为 true,您应该会看到额外的 select 语句正在执行。根据您的实体使用了哪些 JSON 注释,Jackson 不会序列化它们。
奇怪的事情发生了。我使用 jhipster 方法调用 getAll 对象实例的其余服务。调试我看到对象已满,这是填充了其他实体的外键。
例如,实体汽车有一个公司外键指向生产汽车的公司。所以我看到了:
return ResponseEntity.ok().headers(headers).body(page.getContent());
page.getContent() 有公司 1、52、1 的 3 辆车组成的数组(所以我看到 car1.getFirm().getDescription()==> "XXX", " YYY”,“XXX”)。没关系。但是当我看到 json 到达我的浏览器时,我看到“XXX”、“YYY”、null。扩展,我在同一请求的其他响应记录中看不到任何关于已“使用”的公司。
知道为什么会这样吗?
P.S。这里是休息服务的代码,我在 System.out 中看到正确的描述:
@GetMapping("/cars")
public ResponseEntity<List<Car>> getAllCars(CarCriteria criteria, Pageable pageable) {
log.debug("REST request to get Cars by criteria: {}", criteria);
Page<Car> page = carQueryService.findByCriteria(criteria, pageable);
System.out.println("---------------------------------------------");
for (Car car:page.getContent()) {
System.out.println(car.getIdFirm().getDescription());
}
System.out.println("---------------------------------------------");
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
return ResponseEntity.ok().headers(headers).body(page.getContent());
}
如果关系是 Hibernate lazy-loaded,当您在控制台或调试器下打印它们时,您加载它们并且它们是非空的。通过将 show_sql
设置为 true,您应该会看到额外的 select 语句正在执行。根据您的实体使用了哪些 JSON 注释,Jackson 不会序列化它们。