Java @多个重复条目异常

Java @多个重复条目异常,java,mysql,hibernate,many-to-many,Java,Mysql,Hibernate,Many To Many,我以以下方式映射了实体课程和学员之间的双向多对多异常: Course { ... private Collection<Trainee> students; ... @ManyToMany(targetEntity = lesson.domain.Trainee.class, cascade = {CascadeType.All}, fetch = {FetchType.EAGER}) @Jointable(name="COUR

我以以下方式映射了实体课程和学员之间的双向多对多异常:

Course
{
    ...
    private Collection<Trainee> students;
    ...
    @ManyToMany(targetEntity = lesson.domain.Trainee.class,
        cascade = {CascadeType.All}, fetch = {FetchType.EAGER})
    @Jointable(name="COURSE_TRAINEE",
        joincolumns = @JoinColumn(name="COURSE_ID"),
        inverseJoinColumns = @JoinColumn(name = "TRAINEE_ID"))
    @CollectionOfElements
    public Collection<Trainee> getStudents() {
        return students;
        }
    ...
}


Trainee
{
    ...
    private Collection<Course> authCourses;
    ...
    @ManyToMany(cascade = {CascadeType.All}, fetch = {FetchType.EAGER},
        mappedBy = "students", targetEntity = lesson.domain.Course.class)
    @CollectionOfElements
    public Collection<Course> getAuthCourses() {
        return authCourses;
    }
    ...
}
课程
{
...
私人收藏学生;
...
@许多(targetEntity=lesson.domain.培训生.class、,
cascade={CascadeType.All},fetch={FetchType.EAGER})
@Jointable(name=“课程\实习生”,
joincolumns=@JoinColumn(name=“课程ID”),
inverseJoinColumns=@JoinColumn(name=“培训生ID”))
@收藏费
公众募捐(学生){
留学生;
}
...
}
练习生
{
...
私人收藏课程;
...
@ManyToMany(cascade={CascadeType.All},fetch={FetchType.EAGER},
mappedBy=“students”,targetEntity=lesson.domain.Course.class)
@收藏费
公共收藏课程(){
复课;
}
...
}
系统不会创建主键由两个外键组成的表(从相关两个实体的表中导入),而是生成具有以下模式的表“COURSE_TRAINEE”:

我正在开发MySQL 5.1和我的应用程序。服务器是JBoss5.1。
有人知道为什么吗

使用@collectionfements@manytomy。不要同时使用它们! 请注意,@CollectionFements是特定于Hibernate的,而@ManyToMany是基于JPA标准的

进一步阅读:

使用@CollectionFelements@manytomy。不要同时使用它们! 请注意,@CollectionFements是特定于Hibernate的,而@ManyToMany是基于JPA标准的

进一步阅读:

除了Bence Olah之外:(
课程ID
学员ID
)对的主键约束没有创建,因为映射没有说明这些对是唯一的。您需要将代码中的
Collection
s更改为
Set
s以表示此限制,并且将创建主键。

除了Bence Olah之外:(
课程ID
学员ID
)对的主键约束没有创建,因为映射没有说明这些对是唯一的。您需要在代码中将
Collection
s更改为
Set
s以表示此限制,并且将创建主键