如何将一个表中的实体链接到另一个表?

时间:2020-02-03 06:26:19

标签: spring-boot kotlin

如何将另一个表中已经存在的实体链接到我的important_table中?我可以插入ID,但随后需要查询。我想要的是系统自动将people_table中的元素映射到important_table

@Entity(name = "important_table")
data class ImportantEntity(
        @Id @GeneratedValue @Column(name = "id")
        val id: Short = 0,

        @Embedded
        val person: Person
)

人员实体

@Entity(name = "person_table")
data class PersonEntity(
        @Id @GeneratedValue @Column(name = "id")
        val id: Long = 0,
        ...
)

我尝试嵌入,但是在数据库中创建了一个重复的Person。我想要该链接,以便我可以轻松地找到“重要”人员,并且仍然可以获得相同的数据。

1 个答案:

答案 0 :(得分:0)

使用@OneToOne映射使Hibernate(或任何ORM)知道您正在将表链接在一起。

@Entity(name = "important_table")
data class ImportantEntity(
        @Id @GeneratedValue @Column(name = "id")
        val id: Short = 0,

        @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        val person: Person
)

当您说:I could insert the ID but then that would require a query时,确实可以...但是使用FetchType.EAGER时,将由您的ORM为您执行额外的查询...这是透明的。

尽管如此,请注意这一点,如果您不注意自己的关系,最终可能会将整个数据库加载到内存中。

in this sitethis tuto所述,@Embedded用于帮助建立良好而干净的对象定义,而将数据存储到一个表中之2 ...例如,在您的情况下,您将数据从类Person存储到表ImportantTable中。

希望有帮助!