添加新的JPA时,ManyToMany关系不会持久存在

时间:2016-04-05 07:00:29

标签: jpa many-to-many persist

我有这段代码在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搜索了,很多人都有与我相似的代码,但是我的代码并不起作用。

2 个答案:

答案 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);