hibernate - 保存父级时,Hibernate 不会在子表中保存父级的 id
问题描述
这是我的数据库结构:
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
)
当我保存新创建的信息时,我想将该实体的 id 保存在details.information_id中- 它现在不工作并且details.information_id为空。
我是否缺少一些额外的注释参数?还是我的关系不正常了?我可以先保存信息,然后获取其 ID,然后更新详细信息,但这不是我想要的。
编辑:我这样创建我的信息:
val information = Information(
name = "XXXX",
details = Details(additionalData = "YYYY)
)
接着
dao.save(information)
解决方案
YourInformation.details
包含Details
对象,但Details.information
也必须指向原始Information
对象。
推荐阅读
- php - Google-calendar-events:无法使用 cron 或 function.php 获取日历事件
- javascript - gpu十进制精度
- python - 熊猫合并和连接
- java - 使用 Java 客户端调用启用 SSL 的肥皂 Web 服务时出错
- php - 将 ext/hash 从资源移动到对象 php PHP 7.2 迁移
- postgresql - 为单个 PostgreSQL 实例指定不同的数据库和相关文件位置
- intellisense - SSMS Intellisense 适用于某些架构,不适用于其他架构
- php - 此集合实例 laravel 关系上不存在属性 [X]
- angular - 当用户登录、注销或用户更改时,如何在 angular-meteor 中赶上事件?
- spring-data - 如何在 Spring Data 的自定义 MongoRepository 中使用 QueryDSL