显示STRING而不是ORDINAL的枚举字段



我目前正在Spring MVC设计应用程序中使用Hibernate,该应用程序接收数据并将其存储到MySQL数据库中。我有一个模型和枚举的混合映射。一切都很好,存储到DB中的数据是正确的(它存储枚举ORDINAL值)。

然而,当我使用CrudRepository中的findAll()方法输出结果时,结果显示的是正确的枚举值,但形式是STRING,而不是ORDINAL。关于我可以实现什么,或者事情是这样的,有什么想法吗?

下面是一小段代码来展示我到目前为止所拥有的内容:

枚举(标记为"汽车"):

FORD, 
TOYOTA, 
CHEVY

POJO片段(标记为"经销商"):

@Enumerated(EnumType.ORDINAL)
private Cars carType;
//getters and setters

DAO(标记为"经销商DAO"):

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();
}

现在,如果我使用MySQL编辑器来查看数据,那么Dealership表会显示FORD的枚举ORDINAL值(在我调用/dataLoad请求之后)。但是当我调用/findEverything请求时,它显示的是String、FORD,而不是值。

Jackson如何将枚举转换为JSON与JPA无关。您需要告诉Jackson如何序列化您的枚举。例如,使用JsonFormat注释

最新更新