保存父项时,Hibernate不会将父项的ID保存在子表中

时间:2019-04-08 08:40:25

标签: hibernate jpa kotlin spring-data-jpa

这是我的数据库结构:

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
)

当我保存新创建的 Information 时,我想将该实体的ID保存在 details.information_id 中-现在不起作用,并且 details.information_id 为空。

我是否缺少其他注释参数?还是我的关系中断了? 我可以先保存信息,然后获取其ID,然后对详细信息进行更新,但这不是我想要的。

编辑: 我这样创建我的信息

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

然后

dao.save(information)

1 个答案:

答案 0 :(得分:1)

您的Information.details包含Details对象,但是Details.information也必须指向原始的Information对象。