Spring 显示字符串而不是序号的枚举字段
我目前正在SpringMVC设计应用程序中使用Hibernate,该应用程序接收数据并将其存储到MySQL数据库中。我有一个混合的模型和枚举映射。一切正常,存储到数据库中的数据是正确的(它存储的是枚举序号值) 但是,当我使用crudepository中的findAll()方法输出结果时,结果以字符串形式而不是顺序形式显示正确的枚举值。关于我可以实现什么或者事情是这样的,有什么想法吗 下面是一小段代码,展示了我迄今为止所掌握的知识: 枚举(标记为“汽车”): POJO片段(标记为“经销商”): DAO(标记为“经销商DAO”):Spring 显示字符串而不是序号的枚举字段,spring,hibernate,spring-mvc,enums,Spring,Hibernate,Spring Mvc,Enums,我目前正在SpringMVC设计应用程序中使用Hibernate,该应用程序接收数据并将其存储到MySQL数据库中。我有一个混合的模型和枚举映射。一切正常,存储到数据库中的数据是正确的(它存储的是枚举序号值) 但是,当我使用crudepository中的findAll()方法输出结果时,结果以字符串形式而不是顺序形式显示正确的枚举值。关于我可以实现什么或者事情是这样的,有什么想法吗 下面是一小段代码,展示了我迄今为止所掌握的知识: 枚举(标记为“汽车”): POJO片段(标记为“经销商”): D
公共接口经销商DAO扩展了CRUDEPository{
}
控制员:
@Autowired
private DealershipDao dao;
@RequestMapping(value="/dataLoad")
public String dataLoad() {
Dealership dealer = new Dealership();
dealer.setCarType(Cars.FORD);
dao.save(dealer);
return "success";
}
@RequestMapping(value="/findEverything", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
public Iterable<Dealership> findAll() {
return dao.findAll();
}
@Autowired
私人经销商;
@请求映射(value=“/dataLoad”)
公共字符串数据加载(){
经销商=新经销商();
经销商。setCarType(汽车。福特);
保存(经销商);
返回“成功”;
}
@RequestMapping(value=“/findEverything”,products=MediaType.APPLICATION\u JSON\u value,method=RequestMethod.GET)
公共可引用findAll(){
返回dao.findAll();
}
现在,如果我使用MySQL编辑器来查看数据,经销商表将显示FORD的枚举序号值(在调用/dataLoad请求之后)。但是当我调用/findEverything请求时,它显示字符串FORD,而不是值 Jackson如何将枚举转换为JSON与JPA无关。您需要告诉Jackson如何序列化枚举。例如,使用
@Enumerated(EnumType.ORDINAL)
private Cars carType;
//getters and setters
public interface DealershipDao extends CrudRepository<Dealership, Integer> {
}
@Autowired
private DealershipDao dao;
@RequestMapping(value="/dataLoad")
public String dataLoad() {
Dealership dealer = new Dealership();
dealer.setCarType(Cars.FORD);
dao.save(dealer);
return "success";
}
@RequestMapping(value="/findEverything", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
public Iterable<Dealership> findAll() {
return dao.findAll();
}