生成的@ManyToMany连接表的JPA auto_increment id

时间:2011-06-26 01:49:03

标签: java jpa many-to-many composite-key

如果我在两个实体(即StudentCourse)之间存在双向@ManyToMany关系,JPA会生成一个连接表student_id_course_id,其复合主键为{{1 }}。一切正常。

但是如果我有一大堆其他表可以解决这个问题,例如(student_id, course_id)course_assessment,那会是这样的:

course_result

我不希望通过这些表扩散复合键course_assessment student_id course_id assessment_item_description grade course_result student_id course_id overall_grade 。我希望(student_id, course_id)有一个auto_increment id,然后在student_id_course_idcourse_assessment表中使用它。

这似乎是JPA中相当常见的情况,但我无法找到如何做到这一点。其他人通常如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

这种情况实际上非常罕见,因为如果您需要让表引用用户注册到课程的事实(我称之为“注册”),那么这可能意味着此注册是实体,持有信息。

因此,多对多关系成为两个一对多的关系:

  • 一名学生有很多注册
  • 一门课程有很多注册

注册实体可用于保存信息(注册日期......),您可以使用其自动生成ID的外键引用注册的其他实体。