Hibernate не сохраняет идентификатор родителя в дочерней таблице при сохранении родителя - PullRequest
0 голосов
/ 08 апреля 2019

вот моя структура БД:

details
id, information_id

information
id, name

Вот моя информация сущность:

@Entity
@Table(name = "information")
data class Information(
        @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 
        val id: Long? = 0,   

        val name: String,

        @OneToOne(cascade = arrayOf(CascadeType.ALL), mappedBy = "information")
        val details: Detials? = null
)

А вот Подробности :

@Entity
@Table(name = "details")
data class Details(
        @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 
        val id: Long? = null,
        val additionalData: String,

        @OneToOne
        @JoinColumn(name = "information_id", referencedColumnName = "id")
        var information: Information? = null
)

И когда я сохраняю только что созданный Информация Я хочу сохранить идентификатор этого объекта в details.information_id - сейчас он не работает и details.information_id равно нулю.

Я пропустил какой-либо дополнительный параметр аннотации?Или мои отношения разорваны?Сначала я могу сохранить Информация , затем получить его идентификатор, а затем выполнить обновление до Подробно , но это не то, что я хочу.

РЕДАКТИРОВАТЬ: я создаю Информация вот так:

val information = Information(
                name = "XXXX",
                details = Details(additionalData = "YYYY)
        )

, а затем

dao.save(information)

1 Ответ

1 голос
/ 08 апреля 2019

Ваш Information.details содержит объект Details, но Details.information также должен указывать на исходный объект Information.

...