Я пытаюсь смоделировать весной отношения между фильмами и актерами. Здесь у нас есть два моих класса:
@Entity
public class Movie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String genre;
private String year;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Actor> actors;
// getters and setters
@Entity
public class Actor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String surname;
private String age;
// getters and setters
Я определил однонаправленное отношение «многие ко многим», и оно работает хорошо, но не в следующем случае. Если я вставляю новый фильм с новыми актерами, которых еще нет в базе данных, это работает хорошо, все таблицы корректно обновляются. Но если я хочу вставить новый фильм с уже сохраненным актером, я не хочу сохранять дважды, я хочу, чтобы таблица отношений ссылалась на уже сохраненного актера, а в таблице актеров новый актер не добавлялся.
Следующий JSON - это тот, который отправляется конечной точке для создания нового фильма:
{
"actors": [
{
"age": "string",
"dni": "string",
"name": "string",
"surname": "string"
}
],
"genre": "string",
"title": "string",
"year": "string"
}
Итак, как я могу вставить фильм с актером, уже находящимся в базе данных, чтобы на него ссылались? Потому что, если я вставляю новый с точно такими же данными, я сохраняю этого актера дважды, и в случае повторения идентификатора я получаю уникальный индекс или нарушение первичного ключа.
Большое спасибо за вашепомощь!