Spring Boot MVC中如何让ResponseEntity<Integer>返回整数并在API页显示?
问题分析与解决方案
嘿,我一眼就揪出问题根源啦!你的仓库查询语句和返回类型不匹配,这才导致Integer类型的年龄没法正确返回。
问题所在
你写的Repository查询代码是这样的:
@Query("select d.id, d.age from Student d where d.id=:id") Integer findAgeById(Long id);
这条查询语句返回的是两个字段(id和age),实际对应的返回值是一个Object[]数组,但你的方法声明要返回单个Integer类型。这种类型不匹配会让Spring Data没法正确映射查询结果,最终studentService.retrieveAgeById(id)拿到的要么是错误值要么是null,页面自然显示不出年龄。
而获取姓名、性别能成功,是因为那些查询应该只返回了单个String字段,和方法返回类型完全匹配,所以没出问题。
修复方案
只需要修改Repository的查询语句,让它仅返回age字段就行:
@Query("select d.age from Student d where d.id=:id") Integer findAgeById(Long id);
这样查询结果就是单个Integer值,和方法返回类型完全匹配,Spring Data能正确映射结果。
修改后重启应用,再访问http://localhost:8080/1/age,页面就会正确显示5啦!
内容的提问来源于stack exchange,提问作者Srikanth Kb
相关产品推荐
相关产品推荐

