跨微服务调用时Question的Id字段返回null排查求助
问题描述
我有两个微服务:question和quiz:
- question服务的实体包含
questionId、quizId、question、options、answer字段 - quiz服务的实体包含
quizId、title、maxMarks、noOfQuestions字段,还有一个未存储在数据库的Question列表字段
通过Feign Client调用获取指定quizId的详情及关联Question列表时,返回的Question列表中questionId字段全部为null,需排查可能的错误。
排查方向
1. 实体字段映射不匹配
- 检查question服务返回的JSON中,
questionId的键名是否与quiz服务中Question实体的字段名一致。例如question服务返回下划线格式question_id,但quiz侧实体用驼峰questionId,若未配置Jackson的驼峰转下划线规则,会导致字段映射失败,值为null。 - 确认Question实体的
questionId字段是否有正确的getter/setter方法,或是否通过@Data(Lombok)注解保证字段可被序列化/反序列化。
2. Feign Client响应解析配置问题
- 检查Feign Client是否自定义了消息转换器(如使用Gson而非默认Jackson),需确保配置了正确的字段命名策略。
- 确认Feign接口的返回对象类型与question服务的返回结构完全匹配,避免嵌套对象层级错误导致解析失败。
3. Question服务接口返回异常
- 直接调用question服务的接口,查看返回的JSON数据中
questionId是否存在有效值。若接口本身未返回该字段,Feign调用后自然为null。 - 检查question服务的实体类,确认
questionId字段是否被错误添加@JsonIgnore注解(会导致序列化时忽略字段),或JPA的@GeneratedValue配置错误导致查询时未获取到值。
4. Quiz服务列表组装逻辑错误
- 检查quiz服务调用Feign获取question列表后,是否存在不当处理逻辑:比如手动创建新的Question实例但未赋值
questionId,或组装过程中覆盖了该字段的值。
内容的提问来源于stack exchange,提问作者Prathyusha Kumar
相关产品推荐
相关产品推荐

