如何解决对于与 Spring 和 JPA 的 OneToOne 关系,Hibernate 在添加其子类之前需要验证 db 中是否存在超类实例
使用 Kotlin、Spring、Hibernate、JPA,我试图实现 disjoint
作为超类和 Device(id)
作为子类之间的 Camera(id,device_id)
关系,但是,互联网上的示例提出了这种模式对于不需要的 OneToOne:
@Entity
data class Device(
@Id val id: UUID = UUID.randomUUID(),val macId: String? = null,@OneToOne(cascade = arrayOf(CascadeType.ALL))
@JoinColumn(name = "camera_id")
var camera: Camera? = null)
@Entity
data class Camera(
@Id
val id: UUID = UUID.randomUUID()
var range: Double? = null
OneToOne(mappedBy = "camera")
val device: Device? = null)
deviceDAO.save(Device(id,...,Camera(...)))
这是我得到的错误,但如果我在数据库中添加 Device
的实例并将其 ID 用于相机,它会顺利添加设备和相机。
org.postgresql.util.PSQLException: ERROR: insert or update on table "camera" violates foreign key constraint "fkpy16snghab7fuhr2mym0m99vc" Detail: Key (id)=(4a4b0fb7-e5a0-4693-b3b6-0dddbedd3bbc) is not present in table "device".
我想如果我能确保设备存在于数据库中并使用它的 id 添加相机,它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。