#mysql #spring-boot #hibernate #jpa #spring-data-jpa
#mysql #пружинный ботинок #зимовать #jpa #весна-данные-jpa
Вопрос:
Я немного сбит с толку здесь, работая с отношением сущности.
public class Document { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "DOCUMENT_ID") private Integer documentId; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "DOCUMENT_ID", referencedColumnName = "DOCUMENT_ID") private MetaData metadata; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "DOCUMENT_ID", referencedColumnName = "DOCUMENT_ID") private FulfilmentMode fulfilmentMode; @OneToMany(cascade = CascadeType.ALL, mappedBy = "document") private Listlt;Attachmentgt; attachments; } public class MetaData { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "DOCUMENT_META_INFO_ID") private Integer documentMetaInfoId; @OneToOne(fetch = FetchType.LAZY, mappedBy = "metadata") private DocumentRecord document; }
В основном документ содержит метаданные. Когда я сохраняю документ, я ожидаю, что метаданные также должны сохраняться.
repo.save(Document.builder().metadata(MetaData.builder().build()).build());
Похоже, что внешний ключ, сохраняемый в метаданных, является PK документа, который становится нулевым. Я исходил из предположения, что hibernate сначала сохранит сущность документа и сгенерирует первичный ключ (автоматическая стратегия MySQL), а затем попытается сохранить метаданные.
Не мог бы кто-нибудь пролить немного света на это, пожалуйста?
Комментарии:
1. Удалось решить эту проблему, также добавив объект метаданных в объект документа. Двунаправленный. Я думаю, что мне не хватает некоторых из этих концепций.