@TonyJa

Можно ли в Rest контроллере принимать сущность-родителя?

Доброго времени суток.
Подскажите, можно ли в REST контроллере принимать сущность родителя(абстрактный класс)?
Для примера:
Абстрактный класс:
public abstract class Warrior {
    long id;
    String name;
    Integer age;
    Type type;

класс Type - это enum и там есть 2 значения Attackers и Defenders
Далее есть 2 класса наследника Warrior -> Attackers и Defenders

Attackers
public class Attackers extends Warrior {
  int power;
  boolean magic;
}

Defenders
public class Defenders extends Warrior {
    int def;
    int magicDef;
}


Суть вопроса: могу ли я в контроллере принимать Warrior?
Вот так:
@PostMapping(value = "/create")
 public ResponseEntity<Long> createWarrior(@RequestParam Warrior warrior){
        return ResponseEntity.ok(service.createWarrior(warrior));
    }


Но по факту туда будут подаваться сущности наследники, по полю Type, в фабрике, я буду определять какая именно это сущность кастить до нужной мне сущности и сохранять в базу.
У меня сейчас так сделано, но приходит 400 ответ всегда.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@TonyJa Автор вопроса
Решил проблему тем, что @RequestParam поменял на @RequestBody.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы