Есть модель:
@Entity
public class MyModel{
@NonNull
@PrimaryKey
private int id;
private String field1;
private int foreignKey;
private String fieldTable2;
// Далее геттеры и сеттеры.
}
Поля id
и field1
должны быть частью таблицы MyModel
. Но, поле fieldTable2
заполняется через INNER JOIN
в запросе на основании поля foreignKey
.
Если оставить всё как есть, в таблице MyModel будет создано поле
fieldTable2`, что приведёт к денормализации структуры данных.
Вопрос. Как сделать чтобы поле fieldTable2
осталось в классе сущности и при этом не создавалось в таблице?
Тут два варианта:
1) положить ответственность за содержимое fieldTable2 на себя, прописав над ним аннотацию @Ignore. Поле в бд не будет, но и получая из бд экземпляр MyModel это поле будет пустым
2) Надстроить объект с Relation. Примерно так:
@Entity
public class MyModel{
@NonNull
@PrimaryKey
private int id;
private String field1;
private int foreignKey;
}
public class MyModelWithField{
@Embended
public MyModel model;
@Relation(parentColumn = "foreignKey", entityColumn = "key")
public AnotherEntity field; // или public List<AnotherEntity> field; если 1 ко многим
}
Где AnotherEntity
- это Entity
для той таблицы, из которой выбираете по ключу данные
Теперь можно сделать вот такой запрос из DAO
@Query("select * from MyModel where *параметры*")
List<MyModelWithField> getBy(*параметры*)
По типу возвращаемого значения рум поймет, что вам нужно помимо таблицы MyModel притянуть еще и данные из другой таблицы.
Еще ремарка - нельзя использовать Relation внутри Entity. А то есть такой соблазн, по себе знаю =)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть код на Java, я могу превратить его в exe но как я понял это плохоКак сделать так чтобы я мог запускать его без команды, как обычное приложение
На вход приходит byte[] fileData, надо получить на выходе закодированный String
Всем привет , писал код и вдруг IDE начала выдавать ошибку "cannot resolve a symbol"Помогите пожалуйста решить проблему
Доходы фитнесс-клуба состоят из покупок абонементов и складываются в таблицу: