Столбцы с общим идентификатором в Springboot с mysql - PullRequest
1 голос
/ 14 января 2020

У меня есть подпружиненное приложение, которое выполняет операции CRUD на mysql базе данных.

В базе данных thid есть две таблицы Employee и Employee_departament (обе с первичным ключом с автоматическим приращением) и employee_id - это внешний ключ в Employee_departament).

Когда я добавляю нового сотрудника в таблицу Employee, он сгенерирует запись с id = 1. После этого, если я добавлю новую запись в Employee_departament, эта будет иметь id = 2. Похоже, мои таблицы разделяют столбец id.

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Пожалуйста, добавьте эти две аннотации в атрибут id вашего класса сущности

 @GeneratedValue(strategy = GenerationType.AUTO)
        @Access(AccessType.PROPERTY)
0 голосов
/ 14 января 2020

Если вы используете @GeneratedValue(strategy = GenerationType.SEQUENCE) над полями идентификаторов в обеих ваших сущностях, они оба будут использовать последовательность базы данных по умолчанию (названную hibernate_sequence) для генерации новых идентификаторов. Это приводит к описанному вами поведению.

Если вы хотите, чтобы сущности генерировали свои идентификаторы из отдельных последовательностей, вы можете указать имя последовательности, чтобы получить идентификаторы, указав значение generator внутри GeneratedValue аннотации. Например:

Сотрудник. java

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_seq")
    private Long employee_id;
    ...

EmployeeDepartment. java

@Entity
@Table(name = "employee_department")
public class EmployeeDepartment {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_department_seq")
    private Long employee_department_id;
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...