У меня есть сопоставленный объект в 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) не может отобразить String (ссылку на объект) в сам объект:
@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]",
Я совершенно сбит с толку этой загадкой. Что могло быть не так?
Да, я совершенно уверен, что у меня правильный импорт. Я даже проверил четыре раза после того, как вы прокомментировали.




Можете ли вы проверить, что в
@RequestBody Request requestправильно импортирован ваш классRequest, а не другой классRequest, принадлежащий другому пакету / библиотеке и т. д.? Просто проверьте свой импорт.