【问题标题】:How to link an entity from one table into another?如何将一个表中的实体链接到另一个表中?
【发布时间】:2020-02-03 06:26:19
【问题描述】:

如何将另一个表中已存在的实体链接到我的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,
        ...
)

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

【问题讨论】:

    标签: spring-boot kotlin


    【解决方案1】:

    使用@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 中。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多