当我想更新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;
}
}
答案 0 :(得分:3)
代码应添加@JoinTable
注释以定义拥有实体上的多对多关系,在本例中为User
,因为mappedBy
元素指向{{1} 1}} {} {}上的字段。 courses
注释指定关系在数据库中使用的User
和@JoinTable
。您还应在joinColumns
关系中指定inverseJoinColumns
元素。
这是一个例子。请注意,我假设了一些列名,并且数据库中存在一个联结表。
cascade
此示例假定您的数据库包含下表
@ManyToMany
您还可以访问我的博客,其中我在此post中介绍了此主题。