postgresql - JPA 一对一加入 @Id 列。参考表中未更新的连接列
问题描述
我有两张表 Car 和 Status。关系是一对一的 Car has-a Status
Car Table
Id (PK)
Name
status_id(FK)
Status Table
Id(PK)
status_code
关系是car.status_id=status.id
实体
@Entity
class Car{
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
Long id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "status_id", referencedColumnName = "id", insertable = false, updatable = false)
Status status
@Column(name="status_id")
Integer statusId
..
}
@Entity
class Status{
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Long id;
private int status_code;
}
当我保存汽车对象时:
Car{ id=null, name="my car", status_id=null, status={id=null, status_code=123}}
repo.saveAndFlush(car)
保存在表中的数据是:
Car
|Id|name|status_id|
|1|mycar|null | <------THIS NULL IS MY ISSUE
(这应该使用插入状态表中的 id 进行更新。如何实现?
Status
|id|status_code|
|1 |123 |
解决方案
无需单独定义 statusId 字段。只需删除以下几行,它就会按预期工作。
@Column(name="status_id")
Integer statusId
推荐阅读
- javascript - 无法从 openWeatherMap Api 渲染 weather[0].main 属性,它给出了未定义的错误?
- python - 将文本框中的字符串与文件一起发送到 Flask
- xcode - Flutter 生成的 ios 文件版本控制
- python - 如何从亚马逊加拿大抓取数据?
- java - 线程无法读取正在被其他线程修改的实例
- google-api - 如何在未经授权的情况下上传到 YouTube
- excel - 具有可变查找值的过滤范围中的 Vlookup,可变查找范围 VBA
- python - 烧瓶是否开始单线程?
- swift - Swift ObjectMapper 映射具有多种类型值的数组 - 数字和复杂对象混合
- python-3.x - 如何在 python 中将 timedeltas 总和超过 24 小时?