Вложенные объекты: Android Комната - PullRequest
0 голосов
/ 09 января 2020
@Entity(tableName="user_table")
data class User(
   @PriamryKey(autoGenerate = false) val id:Int,
   @Embeded(prefix="address_") val address:Address
)
@Entity(tableName = "address_table")
data class Address(
  @PrimaryKey(autoGenerate = false) val id:Int
)

Есть ли способ просто игнорировать столбец Id из таблицы адресов, потому что, насколько я знаю, я буду получать столбцы id, address_id в пользовательском объекте после создания, у меня есть похожие столбцы здесь и там, а некоторые больше не находятся в использовать один раз, когда я создаю представления для этих таблиц, т.е. внешние ключи и т. д. c

1 Ответ

0 голосов
/ 09 января 2020

Есть ли способ просто игнорировать столбец Id из адреса.

Я не верю в это. Если предположить, что у Address есть другие поля (иначе просто не встраивать), то для встраивания сущности в сущность происходит нормализация базы данных.

Если вы решили, что вам не нужно хранить адреса в отдельной таблице, поскольку фактически существует отношение 1-1, то вам следует покончить с таблицей адресов, которая могла бы / могла бы преобразовать Класс Address не должен быть Entity и удалить поле id.

Если вы хотите сохранить класс Address в качестве Entity, вы не сможете @Ignore @PrimaryKey, поскольку Room требует, чтобы Entity имел @PrimaryKey. Действительно, в этой ситуации наличия другой таблицы для адреса, вы должны ссылаться / отображать адрес, чтобы не отменять нормализацию, и, таким образом, просто иметь поле в user_table для этой ссылки / сопоставления, а не Embed. Тогда вы могли бы / могли иметь класс не-сущности (POJO) для извлечения данных, который использовал бы Embed обоих Entities или Embed one и Relate другой.

...