Используйте отображение @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 выполнит дополнительный запрос для вас ... Это прозрачно.
Тем не менее, будьте осторожны с этим, если вы не обращаете внимания на ваши отношения, вы можете в конечном итоге загрузить всю БД в память ...
Как объяснено на этом сайте и это туто , @Embedded
используется, чтобы помочь иметь хорошее и чистое определение объекта, тогда как сохраняет данные в одной таблице вместо 2 ... Например в вашем случае вы будете хранить данные из класса Person
в таблице ImportantTable
.
Надеюсь, это поможет!