spring - 如何创建一个可嵌入的对象列表,该列表来自 OneToMany 中的自己的表,但基于 One 的 Id
问题描述
所以,我理解这个问题似乎有点奇怪,可能只是为了澄清:
@Entity
@Table(name = "OUTTER")
class Outter(){
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "outterId")
var id: Long? = null
@ElementCollection
val listOfInner = mutableListOf<Inner>()
}
@Embeddable
@Table(name = "INNER")
data class Inner(
@Id
@JoinColumn(name = "outterId")
var outter: Outter
)
不起作用,我不知道为什么。它似乎遵循我看过的指南,所以不确定我错过了什么。
外部:
outterId | outterStuff
---------------------
1 | info
内:
outterId | innerIndex | innerStuff
--------------------------------
1 | 0 | innerInfo
所以它是 1 到多个,但内部的主键是 outterId,然后它使用其他键来确保它是唯一的(不是嵌入式 ID)
解决方案
Embeddable 没有独立的身份。你也不应该@Table
为他们定义一个。
@Entity
@Table(name = "OUTTER")
class Outter(){
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "outterId")
var id: Long? = null
@ElementCollection
@CollectionTable(name = "INNER", joinColumn = "outterId")
val listOfInner = mutableListOf<Inner>()
}
@Embeddable
data class Inner(
//fields as required
)
推荐阅读
- python - 为什么多线程程序比单线程程序慢,尽管它们读取单独的txt文件?
- typescript - 如何在使用泛型参数作为属性名称的打字稿中声明泛型接口?
- flash - 如何在 Adobe Animate 中将动态文本字段中的某些文本设置为斜体?
- javascript - 如何用解析值覆盖输入字段?
- c++ - 简单的字符串比较如何导致 OleException?
- java - 如何从 URL 分析导致程序出现问题的方法?
- php - 如何向此脚本添加功能
- c# - 模型对象上的 Caliburn 微动作
- node.js - 408 Kubernetes 谷歌云客户端
- sql-server - 可以执行存储过程的所有用户列表