Как создать сущность в Spring Boot, чтобы идентификатор оставался прежним - PullRequest
1 голос
/ 25 сентября 2019

В моем приложении Spring Boot предположим, что у меня есть класс с именем A:

@Entity
public class A{
    @Id
    Long id;
    A(){}       
}

и другой класс с именем B:

@Entity
public class B{
    @Id
    Long id;
    A a;
    B(){}       
}

Что я хочу - всякий раз, когда я создаю экземпляр B, A создается с тем же идентификатором .

Как я могу это сделать?

Как в JSON,экземпляр B:

{
   "id": "x",
   "a": {
      "id": "x"
   }
}

Что я получаю:

{
   "id": "x",
   "a": {
      "id": "y"
   }
}

1 Ответ

3 голосов
/ 25 сентября 2019

Этого можно добиться с помощью аннотации @ MapsId в Hibernate.Здесь есть хорошая статья .Ниже я приведу упрощенный пример:

Класс A:

@Entity
public class A {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne(mappedBy = "a", cascade = CascadeType.ALL)
    private B b;

    ...

}

Класс B:

@Entity
public class B {
    @Id
    private Integer id;

    @OneToOne
    @JoinColumn
    @MapsId
    private A a;

    ...

}

В этом примере первичный ключ B.id встроенот A.id.

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