我有这段代码在film_actor
(理论上)添加了一个条目,但它不起作用。此代码不会崩溃,但不会将添加的条目保存到数据库中。
Actor nuevo = ActorFacadeEJB.find(actor_id);
Film pelicula = FilmFacadeEJB.find(film_id);
pelicula.getActors().add(nuevo);
我也有这段代码:
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "film_actor", joinColumns = { @JoinColumn(name = "film_id") }, inverseJoinColumns = {
@JoinColumn(name = "actor_id") })
private Set<Actor> actors;
public Set<Actor> getActors() {
return actors;
}
演员也有一部电影:
@ManyToMany(mappedBy="actors")
private Set<Film> film= new HashSet<Film>();
如何解决所有问题以使其有效?我用Google搜索了,很多人都有与我相似的代码,但是我的代码并不起作用。
答案 0 :(得分:1)
Make sure your Annotations are proper as below :
@Entity
@Table(name="film")
class Film{
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="film_actor",
joinColumns={@JoinColumn(name="film_id")},
inverseJoinColumns={@JoinColumn(name="actor_id")})
private Set<Actor> actors=new HashSet<Actor>;
}
@Entity
@Table(name="actor")
class Actor{
@ManyToMany(mappedBy="actors")
private Set<Film> film= new HashSet<Film>();
}
答案 1 :(得分:0)
您需要分配关系的两面:
pelicula.getActors().add(nuevo);
nuevo.getFilms().add(película);