spring-boot - 当数据库在 SpringBoot 中具有其真实值时,API 为字段返回 0
问题描述
对 Spring 的 API 调用为实体的courseid
字段返回 0 Event
,所有其他字段都返回正确的值。
在EventController
@GetMapping("/events")
Page<EventVM> getEvents(Pageable page) {
return eventService.getEvents(page).map(EventVM::new);
}
EventService
public Page<Event> getEvents(Pageable pageable ) {
return eventRepository.findAll(pageable);
}
那么如果我在邮递员中尝试这个请求,我会得到
{
"id": 453,
"eventname": "This is new",
"courseid": 0,
"date": "2021-12-12",
"maxentrants": 12,
"cost": 20.00,
"eventtype": "4BBB",
"qualifier": false,
"info": "This is a test from react",
"winner": null
}
所以courseid
显示为 0 而实际上它是241
为了确保我能得到这个值,我在 EventController 中做了一个简单的 getEvents,
@GetMapping("management/events")
List<Event> getEvents() {
return eventRepository.findAll();
}
这将正确返回所有值 inc courseid
。
courseid
在表中是Event
表中的外键。我认为这可能是问题所在,但是当我进行简单的 getEvents 调用时它运行良好。id
Course
已编辑
com.hoaxify.hoaxify.event.vm;
import com.hoaxify.hoaxify.event.Event;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
public class EventVM {
private Long id;
private String eventname;
private long courseid;
private String date;
private int maxentrants;
private BigDecimal cost;
private String eventtype;
private Boolean qualifier;
private String info;
private String winner;
public EventVM(Event event) {
this.setId(event.getEventid());
this.setEventname(event.getEventname());
this.setEventtype(event.getEventtype());
this.setDate(event.getDate());
this.setCost(event.getCost());
this.setInfo(event.getInfo());
this.setQualifier(event.getQualifier());
this.setMaxentrants(event.getMaxentrants());
this.setWinner(event.getWinner());
}
}
解决方案
假设Event
有一个courseid
属性,那么您需要EventVM
按如下方式修复构造函数:
public EventVM(Event event) {
this.setId(event.getEventid());
this.setEventname(event.getEventname());
this.setEventtype(event.getEventtype());
this.setCourseid(event.getCourseid());
this.setDate(event.getDate());
this.setCost(event.getCost());
this.setInfo(event.getInfo());
this.setQualifier(event.getQualifier());
this.setMaxentrants(event.getMaxentrants());
this.setWinner(event.getWinner());
}
注意添加的行this.setCourseid(event.getCourseid());
。
推荐阅读
- php - 使用 /blogo/testing-view_5.html 清理 url,所有 php 文件都是 .html .htaccess
- c# - 如何在 ASP.NET MVC 存储库模式中使用“Sql in”
- couchbase - Couchbase 创建了巨大的 GSI 索引文件
- java - Tomcat 错误 java.lang.ClassCastException:
- javascript - 带有 javascript 的 Asp 更新面板
- c# - c# OpenFileDialog 位置不可用
- php - json格式的菜单树结构
- python - 在 GeoDjango 中映射多边形的最简单方法
- android - Firebase:解决后无法更改配置“:android:natives”的策略
- sql - 如何在一个请求中获取用户及其所有图像?