Как передать 2 объекта в @RequestBody?

Не могли бы вы помочь мне решить проблему с прохождением двух объектов через @RequestBody? Насколько я знаю, вы не можете передать 2 параметра @RequestBody, поэтому я создал класс Tuple для хранения пользовательских данных. В моем случае мне нужно передать объект Book и значение int в представлении json. Я уже пробовал разные способы, но каждый раз его нельзя правильно разобрать.

    @NoArgsConstructor
    @AllArgsConstructor
    @Getter
    @EqualsAndHashCode
    @ToString
    public final class Tuple<K, V> {
        private K key;
        private V value;
    }

В этом методе я использую Tuple.

    @PutMapping("action/returnBook")
    public ResponseEntity<Void> returnBook(@RequestBody final Tuple<Long, Long> userIdBookInstanceId) {
        leasingHistoryService.returnBook(userIdBookInstanceId.getKey(), userIdBookInstanceId.getValue());
        return new ResponseEntity<>(HttpStatus.OK);
    }

    @Entity
    @NoArgsConstructor
    @AllArgsConstructor
    @Getter
    @EqualsAndHashCode
    @ToString
    public final class Book {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;

        private String title;

        @ManyToOne(cascade = CascadeType.ALL, optional = false)
        private Author author;

    }

    @Entity
    @NoArgsConstructor
    @AllArgsConstructor
    @Getter
    @EqualsAndHashCode
    @ToString
    public final class Author {

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Long id;

        private String name;

        private LocalDate dateOfBirth;

        private String bio;
   }

Какова структура json-кода, который я должен передать в запросе PUT?

Возможный дубликат stackoverflow.com/questions/12893566/…

Adya 20.05.2018 04:16

Думаю, с универсальными типами это не сработает. Вы должны создать, например, класс ReturnBookRequest со свойством Book и свойством int, а затем передать этот класс в RequestBody

vanillaSugar 20.05.2018 12:40

ты не можешь. проверьте включить ссылку

Antoniossss 20.05.2018 19:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
2 175
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел способ это сделать. В данном случае это следующий json:

{
    "key" : {
        "title": "The Girl in the Spider's Web v17",
        "author": {
            "id": 2,
            "name": "Larsson",
            "dateOfBirth": "1954-08-15",
            "bio": "Author of the Millennium trilogy"
        }
    },
    "value": 3
}

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