Доброго времени суток.
Подскажите, можно ли в 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 ответ всегда.