У меня есть две сущности 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
или есть лучшие способы справиться с этим?