如何创建一个可嵌入的对象列表,该列表来自OneToMany中自己的表,但基于一个人的ID

时间:2019-12-04 19:13:43

标签: spring hibernate jpa

所以,我知道这个问题似乎有点奇怪,可能只是要澄清一下:

@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到多个,但inner的主键是outterId,然后它使用其他键来确保它是唯一的(不是嵌入式ID tho)

1 个答案:

答案 0 :(得分:0)

可嵌入的对象没有独立的身份。也不应该为它们定义@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
)