La fusión JPA() no funciona como se espera cuando se resguarda un objeto modificado

votos
12

Esta es mi configuración para la entidad

@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
}

Puedo llamar exitosamente a entityManager.merge()' when I add a newActor` a la lista de películas. Lo siguiente persiste exitosamente las tablas.

Movie movie = getMovieById(id);
movie.setActors(new Actor());
entityManager.merge(movie);

Entonces quiero actualizar el nombre del actor, así que lo que hago es esto. NO puedo actualizar un actor ya existente:

Movie movie = getMovieById(id);
movie.getActors().get(0).setName(New Name);
entityManager.merge(movie);

Lo anterior no funciona, puedo ver que el objeto se actualiza en modo de depuración pero cuando merge()se llama no actualiza la base de datos.

¿En qué me equivoco? Pensé que la fusión se actualizaría si ya existía

Publicado el 06/06/2020 a las 03:21
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more