如何将另一个表中已经存在的实体链接到我的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。我想要该链接,以便我可以轻松地找到“重要”人员,并且仍然可以获得相同的数据。
答案 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 site和this tuto所述,@Embedded
用于帮助建立良好而干净的对象定义,而将数据存储到一个表中之2 ...例如,在您的情况下,您将数据从类Person
存储到表ImportantTable
中。
希望有帮助!