У меня ошибка 415 Unsupported Media Type
во время сохранения SpringJPA.
Я добавил в TypeHeatSystem @JsonIdentityReference(alwaysAsId = true)
, потому что я хочу получить только идентификатор конвейера после запроса на получение.
ТипHeatSystem Entity:
@Entity
@Table(name = "type_heat_system")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "typeHeatSystemId"
)
public class TypeHeatSystem {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long typeHeatSystemId;
@OneToMany(mappedBy = "typeHeatSystem", fetch = FetchType.LAZY,
cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH, CascadeType.REMOVE}, orphanRemoval = true)
@JsonIdentityReference(alwaysAsId = true)
private List<Pipeline> pipelines;
@Override
public String toString() {
return "TypeHeatSystem{" +
"typeHeatSystemId=" + typeHeatSystemId +
", typeHeatSystemValue='" + typeHeatSystemValue + '\'' +
'}';
}
Объект трубопровода:
@Entity
@Table(name = "pipeline")
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "pipelineId")
public class Pipeline {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long pipelineId;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH, CascadeType.REMOVE}, fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "type_heat_system_id")
private TypeHeatSystem typeHeatSystem;
Метод внутри контроллера
PostMapping(value = "save")
public ResponseEntity save(@RequestBody TypeHeatSystem typeHeatSystem) throws JsonProcessingException {
TypeHeatSystem requiredTypeHeatSystem;
if (typeHeatSystem.getTypeHeatSystemId() < 1) {
return new ResponseEntity<>("Передан некорректный Id", HttpStatus.BAD_REQUEST);
}
try {
requiredTypeHeatSystem = typeHeatSystemService.save(typeHeatSystem);
} catch (Exception ex) {
return new ResponseEntity<>("Ошибка при работе сервера", HttpStatus.INTERNAL_SERVER_ERROR);
}
String result = new ObjectMapper().writeValueAsString(requiredTypeHeatSystem);
return ResponseEntity.ok().body(requiredTypeHeatSystem);
}
Я также пытался использовать @JsonBackReference
и @JsonManagedReference
, но мне это не помогло.
Можете ли вы посоветовать мне, что я сделал не так.
Спасибо!