Это моя настройка для сущности
@Entity
@Getter
@Setter
@Table(name = movies, schema = public)
public class Movie {
@Id
@Column(name = id)
private UUID movieId;
@OneToMany(mappedBy = actor, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Actors> actors = new HashSet<>();
//Getters and setters
}
}
@Entity
@Getter
@Setter
@Table(name = actors_movies, schema = public)
public class ActorMovie {
@EmbeddedId
private ActorId id;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId(movieId)
@JoinColumn(name = id_movie_movie)
private Movie movie;
//Getters and setters below
}
Я могу успешно вызвать entityManager.merge()' when I add a new
Актера в список фильмов. Следующее успешно сохраняется в таблицах.
Movie movie = getMovieById(id);
movie.setActors(new Actor());
entityManager.merge(movie);
Тогда я хочу обновить имя актера, чтобы я сделал вот это. Я НЕ могу обновить уже существующего/существующего актера:
Movie movie = getMovieById(id);
movie.getActors().get(0).setName(New Name);
entityManager.merge(movie);
Вышеуказанное не работает, я вижу, что объект обновляется в отладочном режиме, но когда merge()
он называется, он не обновляет базу данных.
Куда я иду не так? Я думал, что слияние обновится, если оно уже существует