Spring MVC не преобразует ссылку на объект

У меня есть сопоставленный объект в 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, принадлежащий другому пакету / библиотеке и т. д.? Просто проверьте свой импорт.

pleft 08.06.2018 14:21

Да, я совершенно уверен, что у меня правильный импорт. Я даже проверил четыре раза после того, как вы прокомментировали.

Roman Kurbanov 08.06.2018 14:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
153
0

Другие вопросы по теме