Hibernate: сохранение parent_id внутри дочерней таблицы с использованием отношения @OneToMany - PullRequest
0 голосов
/ 14 января 2020

У меня есть две сущности Client и Document с @OneToMany отношениями между ними.

Клиент:

@Entity
@Audited
@Table(name = "clients")
class Client : UpdateEntity() {
    @OneToMany(cascade = [CascadeType.ALL], mappedBy = "clientId")
    var documents: MutableSet<Document>? = HashSet()
    .....
}

Документ:

@Entity
@Audited
@Table(name = "documents")
class Document : UpdateEntity() {
    @Column(name = "client_id")
    var clientId: Long? = null
    .....
}

Контроллер:

@PostMapping
fun addClient(@RequestBody clientDto: ClientDto): ClientDto {
    var client = Client()
    client = clientDto.toEntity(client)
    clientRepository.save(client)
    return clientDto.toDto(client)
}

Проблема в том, что client_id не сохраняется в таблице documents. Я пробовал различные варианты, такие как @JoinColumn, @ManyToOne со стороны Document, но ничего не получалось.

Единственный способ решить эту проблему - использовать @PostPersist

@PostPersist
fun postPersist() {
    documents?.forEach { d ->
        d.clientId = id
    }
}

Но это не похоже на правильный способ сделать это, по крайней мере, для меня.

Должен ли я использовать @PostPersist или есть лучшие способы справиться с этим?

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