我在集合上使用了@ManyToMany
注释,它工作正常。
@ManyToMany
@JoinTable(name="stud_course_map",joinColumns={@JoinColumn(name="stud_id ")}, inverseJoinColumns={@JoinColumn(name="course_id")} )
public Set<Course> getEnrolledCourses() {
return enrolledCourses;
}
当我使用 ArrayList
而不是 Set
时,它会引发异常:
org.hibernate.AnnotationException:非法尝试映射非 作为@OneToMany、@ManyToMany或@CollectionOfElements集合: com.kaushik.winnersoft.data.Student.enrolledCourses
不支持ArrayList
吗?@ManyToMany
注释支持哪些所有集合?
支持的接口包括:
java.util.Set
java.util.List
java.util.Collection
您得到异常是因为您使用了其中一个接口的具体实现。始终使用上面给出的接口定义@ManyToMany
或@OneToMany
,你会没事的。
ArrayList 是受支持的,但你必须这样写它:
private List<User> users = new ArrayList<>();
而不是
private ArrayList<User> users = new ArrayList<>(); //gives an error