JPA merge() non funziona come previsto quando si salva un oggetto modificato

voti
12

Questo è il mio set up per l'entità

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

Sono in grado di chiamare entityManager.merge()' when I add a newcon successo Actor` alla lista dei film. Le seguenti tabelle persistono con successo.

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

Poi voglio aggiornare il nome dell'attore, quindi quello che faccio è questo. NON sono in grado di aggiornare un attore già esistente:

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

Quanto sopra non funziona, posso vedere l'oggetto che viene aggiornato in modalità debug ma quando merge()viene chiamato non aggiorna il database.

Dove sto sbagliando? Pensavo che la fusione si aggiornasse se già esistente

È pubblicato 06/06/2020 alle 03:21
fonte dall'utente
In altre lingue...                            

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