как сохранить один первичный стол в качестве внешнего ключа другой таблицы, используя отношение один к одному - PullRequest
0 голосов
/ 12 мая 2019

У меня есть две сущности с отношением один-к-одному, я хочу, чтобы первичная сущность первичного объекта являлась внешним ключом дочерней сущности вместе с первичным ключом дочерней сущности

Я пытался использовать JPA @MapsId (), но не смогуспешно

моя родительская сущность

 @Id
    @SequenceGenerator(initialValue=10000, name = "parent_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, 
     generator="parent_seq")
    @Column(name = "parent_id")
    private long parentid;

    @OneToOne(mappedBy="parentEntity", cascade = CascadeType.ALL)
    private ChildEntity childEntity;


    and in my child entity 



         @SequenceGenerator(initialValue=10000, name = "child_seq")
            @GeneratedValue(strategy = GenerationType.SEQUENCE, 
            generator="child_seq")
            @Column(name = "child_id")
            private long childid;

            @MapsId("parent_id")
            @OneToOne
            private ParentEntity parentEntity;

здесь я хотел бы создать таблицы с использованием JPA, для которых я дал spring.jpa.hibernate.ddl-auto = создать это работает нормально, но яЯ ожидаю, что столбец parent_id должен быть создан внутри моей таблицы childEntity, но он не создается, а parent_id должен быть вставлен в столбец parent_id дочерних таблиц.

1 Ответ

0 голосов
/ 13 мая 2019

Когда вы собираетесь использовать функцию @MapsId, тогда ваша «дочерняя» сущность должна иметь «простой» идентификатор без какого-либо поколения.Например:

@Entity
@Table(name = "parents")
public class Parent {
    @Id
    @GeneratedValue(...)
    private Long id;
    // other stuff...
}
@Entity
@Table(name = "children")
public class Child {
    @Id
    private Long id;

    @MapsId
    @OneToOne(fetch = FetchType.LAZY)
    private Parent parent;

    // other stuff...
}

В этом случае таблица children будет выглядеть следующим образом:

create table children (
  parent_id bigint not null constraint children_pkey primary key,
  -- other stuff...
  constraint fk_children_parent_id foreign key (parent_id) references parents(id)
);

Дополнительная информация: Лучший способ сопоставленияотношения @OneToOne с JPA и Hibernate

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