Невозможно сказать, какой код Person
относится к вашему новому Movie
.Поэтому вам действительно нужно выполнить запрос и вручную установить связь.
Существует альтернатива, которая была бы возможна только в том случае, если ваша конечная точка создаст Person
в то же время, когда она создаст Movie
.Затем вы можете просто выполнить 2 действия сохранения или использовать CascadeType=ALL
для выполнения одного действия сохранения.
Если вы можете изменить параметры запроса, может быть хорошим выбором для получениязавершить Person
объект, вместо того, чтобы принять directorId
.Таким образом, вы можете просто сделать ассоциацию movie.director = director;
.
Будьте осторожны с этим видом подхода: если полученный объект Person
не сохранен в вашей базе данных, вы получите исключение.
Может быть, вы могли бы создать кеш для Directors
.Например, если все ваши директора сохранены в Redis, вы можете выполнить поиск Director
, соответствующий полученному directorId
, и затем выполнить сопоставление.
Конечно, вам все равно потребуется выполнить вторую операцию., но это может быть намного дешевле, чем запросить базу данных.