Добрый день.
Начнем с самого начала.
Рекомендую в первую очередь реализовать энтерпрайз паттерн DTO.
Создаете модель, которая описывает вашу сущность и которую планируете получать в контроллере для создания и отправлять ответ после создания.
Желательно называть их понятным образом.
Допустим, у вас есть entity - Event. EventCreationRequest, EventCreationResponse, EventDTO, EventUpdatingRequest и т.д.
Конечно же, вам нужно маппить данные между Event -- EventDTO.
Можно по-разному реализовать.
Есть готовые либы - MapStruct, ModelMapper, JMapper и др. Я предпочитаю использовать MapStruct или ModelMapper.
https://www.baeldung.com/spring-type-conversions
Если не хотите либу, то используйте интерфейс
Converter<S,T>
содержащийся в Spring. Он принимает 2 дженерика - source & target.
Например,
EventDTOMapper implements Converter<EventDTO, Event>
Отмечу, что для nested classes тоже стоит создать DTO.
Далее касаемо
@PostMapping("")
можно не указывать скобки, а просто
@PostMapping
.
return ResponseEntity(created, HttpStatus.OK)
можно более сокращенно
ResponseEntity.ok(created);
Следуя документации, hibernate должен сам подтягивать по id нужный Subject из бд, но он этого не делает, ругаясь на отсутствие конструктора.
Отмечу, что каждая сущность должна иметь коструктор без аргументов.
В kotlin для spring есть соответствующие плагины, которые нужно подключать. (читаем документацию)