JPA auto_increment id для сгенерированной таблицы соединений @ManyToMany - PullRequest
0 голосов
/ 26 июня 2011

Если у меня двунаправленное отношение @ManyToMany между двумя объектами (т. Е. Student и Course), JPA создает таблицу соединения student_id_course_id с составным первичным ключом (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) через эти таблицы. Я бы предпочел, чтобы student_id_course_id имел один идентификатор auto_increment, а затем использовал его в таблицах course_assessment и course_result.

Похоже, это был бы довольно распространенный сценарий в JPA, но я не смог выяснить, как это сделать. Как другие люди обычно подходят к этому?

1 Ответ

0 голосов
/ 26 июня 2011

Эта ситуация на самом деле довольно редкая, потому что если вам нужны таблицы, ссылающиеся на тот факт, что пользователь зарегистрирован в курсе (я назову это «регистрацией»), то это, вероятно, означает, что эта регистрация являетсясущность, содержащая информацию.

Таким образом, отношение «многие ко многим» становится двумя отношениями «один ко многим»:

  • У одного студента много регистраций
  • Один курсимеет много регистраций

Объект регистрации может использоваться для хранения информации (дата регистрации, ...), и у вас могут быть другие объекты, ссылающиеся на регистрацию с использованием внешнего ключа для ее автоматически сгенерированногоID.

...