【问题标题】:JPA auto_increment id for generated @ManyToMany join table生成的 @ManyToMany 连接表的 JPA auto_increment id
【发布时间】:2011-06-26 01:49:02
【问题描述】:

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

但是,如果我有一大堆其他表可以使用该键,例如course_assessmentcourse_result,看起来像这样:

course_assessment
  student_id
  course_id
  assessment_item_description
  grade

course_result
  student_id
  course_id
  overall_grade

我不想通过这些表增加组合键(student_id, course_id)。我希望 student_id_course_id 有一个 auto_increment id,然后在 course_assessmentcourse_result 表中使用它。

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

【问题讨论】:

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


    【解决方案1】:

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

    多对多关系因此变成了两个一对多关系:

    • 一个学生有很多注册
    • 一个课程有很多注册

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2016-08-17
      • 2011-06-27
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多