在Spring Boot应用程序中,我有一个Drone实体,其中有一个字段“药物”,我正试图将其映射为map<药物,整数>。目标是将无人机携带的药物与其相应的数量关联起来。然而,当我试图在请求正文中使用JSON创建或更新具有此映射的无人机时,我总是会遇到“不支持的媒体类型”错误:
2023-08-30T20:49:24.538+03:00 WARN 12444 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/json;charset=UTF-8' is not supported]
以前我在药物领域使用了一个列表,它都很有效。还发布了没有地图的DroneDto<药物,整数>药物领域的工作。
这就是我在无人机实体中绘制药物图的方式:
@ElementCollection
@CollectionTable(name = "drones_medications_map",
joinColumns = {@JoinColumn(name="drone_id")})
@MapKeyJoinColumn(name = "medication_id", referencedColumnName = "id")
@Column(name = "count")
private Map<Medication, Integer> medications;
对于帖子请求,我将DroneD传递给:
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class DroneDto {
private int id;
private String serialNumber;
private DroneModel droneModel;
private int weightLimit;
private int batteryCapacity;
private DroneState droneState;
private Map<Medication, Integer> medications = new HashMap<>();
private User user;
}
DroneController片段:
@RestController
@RequestMapping("/api/v1")
public class DroneController {
@Autowired
private DroneService droneService;
@PostMapping("/user/{userId}/drones/create")
public ResponseEntity<DroneDto> saveDrone(@PathVariable("userId") int userId, @RequestBody DroneDto droneDto){
return ResponseEntity.ok(droneService.saveDrone(droneDto, userId));
}
对于我尝试的控制器
@PostMaping(value = "/user/{userId}/drones/create" consumes=MediaType.APPLICATION_JSON_VALUE)
但还是一样。