Зачем нам нужны два конструктора в комнате? - PullRequest
0 голосов
/ 05 сентября 2018

Один с идентификатором, а другой без. Кроме того, почему невозможно удалить конструктор? Почему вместо этого должен быть указан @Ignore? Заранее спасибо.

Я имею в виду сущность. Вот код, на который я ссылаюсь, и URL.

@Entity(primaryKeys={"id", "versionCode"})
class VersionedThingy {
  @NonNull public final String id;
  public final int versionCode;

  @Ignore
  private String something;

  VersionedThingy(String id, int versionCode) {
    this.id=id;
    this.versionCode=versionCode;
  }
}

https://commonsware.com/AndroidArch/previews/the-dao-of-entities

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете проверить документацию здесь: https://developer.android.com/reference/android/arch/persistence/room/Entity,, в которой сказано:

Каждый объект должен иметь конструктор без аргументов или конструктор, параметры которого соответствуют полям (в зависимости от типа и имени). Конструктор не должен получать все поля в качестве параметров, но если поле не передается в конструктор, оно должно быть либо общедоступным, либо иметь общедоступный установщик. Если соответствующий конструктор доступен, Room всегда будет его использовать. Если вы не хотите, чтобы он использовал конструктор, вы можете аннотировать его с помощью Ignore.

Когда класс помечается как сущность, все его поля сохраняются. Если вы хотите исключить некоторые из его полей, вы можете пометить их с игнорированием.

Если поле является переходным, оно автоматически игнорируется, если оно не с пометкой ColumnInfo, Embedded или Relation.

Итак, вы можете использовать только один конструктор, в зависимости от того, какие поля вам нужны в Database

Надеюсь, я как-то помог:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...