【发布时间】:2020-06-06 01:21:30
【问题描述】:
这是我为实体设置的:
@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
}
当我将新的Actor 添加到电影列表时,我能够成功调用entityManager.merge()。以下成功持久化了表。
Movie movie = getMovieById(id);
movie.setActors(new Actor());
entityManager.merge(movie);
然后我想更新演员的名字,所以我要做的就是这个。我无法更新已经持久化/现有的 Actor:
Movie movie = getMovieById(id);
movie.getActors().get(0).setName("New Name");
entityManager.merge(movie);
上面的方法不起作用,我可以看到在调试模式下正在更新对象,但是当调用 merge() 时它不会更新数据库。
我哪里错了?如果已经存在,我认为合并会更新。
【问题讨论】:
标签: java jpa persistence javax.persistence