Spring MVC не конвертирует ссылку на сущность - PullRequest
0 голосов
/ 08 июня 2018

У меня есть сопоставленная сущность в 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]",

Я весьма озадачен этой загадкой.Что может быть не так?

...