Spring Controller - сопоставление атрибута JSON с сущностью внешнего ключа - PullRequest
0 голосов
/ 09 июня 2018

UserController.java

@RestController
@RequestMapping("/users")
public class UserController {
    // code
    @PostMapping("/sign-up")
    public void signUp(@RequestBody User user) {
        //code
    }
}

User

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private long id;

    @ManyToOne
    @JoinColumn(name = "language_id")
    private Language language;

    // others
    public User() {
    }
}

Итак, как видите, Language является независимой сущностью.Но я хочу иметь возможность отправить следующую JSON структуру

{
    "foreName" : "bla",
    "sureName" : "blo",
    "language" : "1"
}

Но я получаю следующую ошибку

Невозможно создать экземпляр entity.db.user.Language (хотя бы одинСоздатель существует): нет конструктора / фабричного аргумента-метода String-аргумента для десериализации из строкового значения ('1');

Нужно ли предварительно пройти через фильтр для извлечения сущности Language?Есть ли форма для форсирования метода разбора?Как это сделать правильно?

1 Ответ

0 голосов
/ 09 июня 2018

Создайте новый объект DTO, скажем UserDTO, как тело запроса в вашем методе API.Обработайте DTO, чтобы сформировать объект User, чтобы продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...