SpringBoot接口返回Event实体courseid字段为0但数据库值正确问题排查
问题原因
检查EventVM类的构造方法即可定位问题:你在Event实体转EventVM对象的构造逻辑中,完全没有对courseid字段执行赋值操作。
因为EventVM中courseid被定义为long基本数据类型,Java会给未手动赋值的基本类型数值成员变量默认赋值为0,这就是接口返回0的根本原因。
你新增的直接返回Event实体的接口没有经过EventVM转换,所以可以正常读取数据库中的真实值,和外键关联逻辑无关。
修复方案
只需要在EventVM的构造方法中补充courseid的赋值逻辑即可,修改后的构造方法代码如下:
public EventVM(Event event) { this.setId(event.getEventid()); this.setEventname(event.getEventname()); this.setCourseid(event.getCourseid()); // 新增该行赋值逻辑 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()); }
如果业务场景允许courseid为空,也可以把EventVM中courseid的字段类型从基本类型long改为包装类型Long,避免未赋值时默认返回0的问题。
内容的提问来源于stack exchange,提问作者James Smith
相关产品推荐
相关产品推荐

