Тот же идентификатор из последовательности для 2 таблиц - JPA - PullRequest
0 голосов
/ 15 октября 2018

У меня есть 2 объекта, которые используют ту же последовательность, что и первичный ключ, как мне сопоставить?Пример:

@Entity
@Table("employeT")
    public class Employe(){
          @SequenceGenerator(name = "generator_id", sequenceName = "seq_id") 
          @GeneratedValue(generator = "generator_id")
          @colunm(name = "id")
          private Integer id;

          @colunm(name = "nameEmp")
          private String name;

          @JoinColumn(name = "id")
          private Computer computer;
}

@Entity
@Table("computerT")
    public class Computer(){
          @SequenceGenerator(name = "generator_id", sequenceName = "seq_id") 
          @GeneratedValue(generator = "generator_id")
          @colunm(name = "id")
          private Integer id;

          @colunm(name="name_computer")
          private String nameComputer;
}

Мне нужно сохранить сотрудника и компьютер с одинаковым идентификатором, сгенерированным сотрудником save.

1 Ответ

0 голосов
/ 15 октября 2018

Есть три вещи, которые нужно сделать с вашим кодом, чтобы работать так, как вам нужно.

  1. Добавить @ OneToOne аннотацию, чтобы указать, что Сотрудник и Компьютер связаны.
  2. Удалите информацию о @ SequenceGenerator из объекта «Компьютер» и добавьте аннотацию @ Id
  3. Добавить аннотацию @ MapsId . [Подробнее]

Так что это будет выглядеть примерно так:

@Entity
@Table("employeT")
public class Employe(){
          @Id
          private Integer id;

          @Colunm(name = "nameEmp")
          private String name;


          @OneToOne
          @JoinColumn(name = "computer_id")
          @MapsId
          private Computer computer;
}

Почему?

@ OneToOne аннотация указывает на связь междуentity.

@ SequenceGenerator является избыточным, поскольку мы «копируем» id из сущности Computer.

@ Id аннотация обязательна для указания того, что это поле является нашим первичным ключом.

Lastно не в последнюю очередь, аннотация @MapsId делает магию, где она «заимствует» id из отношения.

Больше информации в ссылке, которую я прикрепил ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...