Java 如何创建多对多关系。生成的实体将具有额外的属性。

Java 如何创建多对多关系。生成的实体将具有额外的属性。,java,jpa,Java,Jpa,我有两个实体:班级(学生)和学生。一个学生可以在很多班级(比如在大学),一个班级有很多学生。问题是如何确保在中间生成的这个实体有2个主键,每个实体(学生和类)的ID。 我需要知道如何使用注释创建它。我在项目中使用EJB3和JPA注释。首先,您不需要中间实体。您有两个实体,它们之间有一个联接表 只有当您有关于该关系的附加信息时,才需要中间实体-例如,StudentClass可能有times缺席列 如果您确实需要第三个实体,您可以: 定义一个单独的类,其中包含主键的两个部分。该类必须是可嵌入的 用于

我有两个实体:班级(学生)和学生。一个学生可以在很多班级(比如在大学),一个班级有很多学生。问题是如何确保在中间生成的这个实体有2个主键,每个实体(学生和类)的ID。
我需要知道如何使用注释创建它。我在项目中使用EJB3和JPA注释。

首先,您不需要中间实体。您有两个实体,它们之间有一个联接表

只有当您有关于该关系的附加信息时,才需要中间实体-例如,
StudentClass
可能有
times缺席

如果您确实需要第三个实体,您可以:

  • 定义一个单独的类,其中包含主键的两个部分。该类必须是可嵌入的
  • 用于指定两个
    @Id
    字段的。您还需要另一个类来保存表示键的两个字段
  • 选择哪个选项


    请注意,这样您就有了一个复合主键,而不是两个主键(您无法拥有)

    我知道如何使用hibernate实现这一点。也许会有帮助

    设置集合类型

     public class CollegeClass { 
         private Set<Student> students;
     }
    
     public class Student { 
         private Set<CollegeClass> classes; 
     }
    
    公共类学院类{
    私立学校学生;
    }
    公营班级学生{
    私有集合类;
    }