在jpa中使用多对多关系时的空表

时间:2013-03-29 14:23:13

标签: java jpa many-to-many

当我想更新jpa中的列表时,表格保持为空。完全没有错误。存在吸气剂和制定者,这里没有列出。

这里是我的课程:

public class User implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private int id;


@ManyToMany
private List<Course> courses;

}

public class Course implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private int id;

@ManyToMany(mappedBy="courses")
private List<User> users;
}

这是我保存对象的方法:

public boolean addCourse(User user, Course course){

    List<User> cas = new ArrayList<User>();
    cas.add(user);

    EntityManager em = getEntityManager();
    try{
        em.getTransaction().begin();
        course.setUsers(cas);
        em.getTransaction().commit();
        em.clear();
        return true;
    } catch(Exception e) {
        em.getTransaction().rollback();
        return false;
    }
}

1 个答案:

答案 0 :(得分:3)

代码应添加@JoinTable注释以定义拥有实体上的多对多关系,在本例中为User,因为mappedBy元素指向{{1} 1}} {} {}上的字段。 courses注释指定关系在数据库中使用的User@JoinTable。您还应在joinColumns关系中指定inverseJoinColumns元素。

这是一个例子。请注意,我假设了一些列名,并且数据库中存在一个联结表。

cascade

此示例假定您的数据库包含下表

@ManyToMany

您还可以访问我的博客,其中我在此post中介绍了此主题。