Quarkus REST接口仅返回ID,未返回LocalTime字段问题
问题原因
你的Slot类继承了PanacheEntity,但自定义的startTime和endTime字段为私有且未提供Getter方法,JSON序列化框架(如Jackson)无法访问这些私有字段,因此仅序列化了PanacheEntity自带的id字段。
解决方法
推荐以下两种规范的处理方式:
方法一:为字段添加Getter方法
可以手动编写Getter,也可以用Lombok注解自动生成:
手动编写Getter
@Entity @Cacheable @Table( name = "slot", uniqueConstraints = {@UniqueConstraint(columnNames = {"start_time", "end_time"})} ) public class Slot extends PanacheEntity { @Column(name = "start_time") LocalTime startTime; @Column(name = "end_time") LocalTime endTime; public LocalTime getStartTime() { return startTime; } public LocalTime getEndTime() { return endTime; } }
使用Lombok简化
若项目已引入Lombok依赖,直接给类添加@Data注解,自动生成所有字段的Getter、Setter等方法:
@Entity @Cacheable @Data @Table( name = "slot", uniqueConstraints = {@UniqueConstraint(columnNames = {"start_time", "end_time"})} ) public class Slot extends PanacheEntity { @Column(name = "start_time") LocalTime startTime; @Column(name = "end_time") LocalTime endTime; }
方法二:配置Jackson允许访问私有字段
如果不想添加Getter,可通过@JsonAutoDetect注解让Jackson直接读取私有字段:
@Entity @Cacheable @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) @Table( name = "slot", uniqueConstraints = {@UniqueConstraint(columnNames = {"start_time", "end_time"})} ) public class Slot extends PanacheEntity { @Column(name = "start_time") LocalTime startTime; @Column(name = "end_time") LocalTime endTime; }
验证效果
修改后重启服务,调用/slots接口将返回完整数据,示例如下:
[{"id":1,"startTime":"09:00","endTime":"10:00"},{"id":2,"startTime":"10:00","endTime":"11:00"}]
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

