У меня есть сопоставленная сущность в SpringData / Jpa
@AllArgsConstructor(suppressConstructorProperties = true)
@Data
@Entity
@Builder
@Table(name = "requests")
@ToString
@NoArgsConstructor
public class Request {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String externalId;
@Enumerated(EnumType.STRING)
private DataSource dataSource;
private String requestNumber;
private Date requestDate;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CLIENTID")
private Client clientId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="DESTINATIONPOINTID")
private Point destinationPointId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MARKETAGENTUSERID")
private User marketAgentUserId;
private String invoiceNumber;
private Date invoiceDate;
private String documentNumber;
private Date documentDate;
private String firma;
private String storage;
private String contactName;
private String contactPhone;
private String deliveryOption;
@Temporal(TemporalType.TIMESTAMP)
private Date deliveryDate;
private Integer boxQuantity;
private Integer weight;
private Integer volume;
private BigDecimal goodsCost;
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy HH:mm")
private Date lastStatusUpdated;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "LASTMODIFIEDBY")
private User lastModifiedBy;
@Enumerated(EnumType.STRING)
private RequestStatus requestStatusId;
private String commentForStatus;
private Integer hoursAmount;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name= "ROUTELISTID")
private RouteList routeListId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "LASTVISITEDROUTEPOINTID")
private Point lastVisitedRoutePointId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "WAREHOUSEPOINTID")
private Point warehousePoint;
@OneToMany(mappedBy = "requestId")
private List<RequestHistory> requestHistory = new ArrayList<>();
}
У меня также есть сложный POST-запрос со многими параметрами, но проблема сводится к следующему: некоторая часть этого стека (Hibernate, Jackson-databind, Spring-MVC / REST / Data) не может отобразить строку (ссылку на объект) на сам объект:
@RequestMapping(value = "/commands/updateRequests", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public void Fgsfds(
@RequestBody Request request
) {}
Я передаю строку (правильная ссылка на объект)скажем так, почтальон, и он возвращает ошибку с сообщением:
"message": "JSON parse error: Cannot construct instance of `org.springframework.hateoas.Resource` (although at least one Creator exists): no String-argument
constructor/factory method to deserialize from String value ('http://localhost:8080/api/requests/8'); nested exception is
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.springframework.hateoas.Resource` (although at least one Creator
exists): no String-argument constructor/factory method to deserialize from String value ('http://localhost:8080/api/requests/8')\n at [Source: (
PushbackInputStream); line: 1, column: 1]",
Я весьма озадачен этой загадкой.Что может быть не так?