Entity:
@Document public class InvestmentRequirement { @Id private String id; private List<Industry> industries;
controller:
public ResponseEntity<InvestmentRequirement> save( @ModelAttribute @Valid InvestmentRequirement investmentRequirement, @RequestParam String industries) throws Exception {
service:
List<Industry> industry = objectMapper.readValue(industries, new TypeReference<List<Industry>>() { });
postman:
industries字段给值
[{ "industry":"adssadf", "category1":"asads", "category2":"112345", "category3":"test" },
{ "industry":"adssadf", "category1":"asads", "category2":"112345", "category3":"test" }
]
原因:
由于@ModelAttribute @Valid InvestmentRequirement investmentRequirement会自动生成一个实体,就要给实体里边的属性赋值,所以就会出现类型转换异常。
本来应该是要在servece里边进行类型转换的,但是由于有@ModelAttribute注解,所以就会在请求时出现异常
解决方法:
将controller中的industries改个名字,使得在创建investmentRequirement时,industries字段为空,然后再由@RequestParam String industriesStr取值。service中处理
List<Industry> industry = objectMapper.readValue(industriesStr, new TypeReference<List<Industry>>() { });并赋值。