Η συγχώνευση JPA () δεν λειτουργεί όπως αναμενόταν κατά την αποθήκευση ενός τροποποιημένου αντικειμένου

ψήφοι
12

Αυτή είναι η οργάνωση μου για την οντότητα

@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() λέγεται ότι δεν ενημερώνει τη βάση δεδομένων.

Πού πάω στραβά; Νόμιζα ότι η συγχώνευση θα ενημερώθηκε εάν υπάρχει ήδη.

Δημοσιεύθηκε 06/06/2020 στις 03:21
πηγή χρήστη
Σε άλλες γλώσσες...                            

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