Я пытаюсь получить Pojo из базы данных Android Room, как и для другого объекта, но я получаю следующий код ошибки:
ошибка: проблема с запросом: [SQLITE_ERROR] Ошибка SQL или отсутствует база данных (такой столбец отсутствует: e_item_type_id)
ItemEntity
@Entity(tableName = "items",
foreignKeys ={
@ForeignKey(
entity = ItemTypeEntity.class,
parentColumns = "e_item_type_id", // remote class
childColumns = "item_type_id" // local class
)
}
,
indices = {
@Index(value = {"item_type_id"})
})
public class ItemEntity extends BaseEntity implements Item {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "e_item_id")
private Integer id = null;
@ColumnInfo(name = "item_type_id")
private int itemTypeId;
public int getItemTypeId() {
return itemTypeId;
}
public void setItemTypeId(int itemTypeId) {
this.itemTypeId = itemTypeId;
}
@Override
public Integer getId() {
return id;
}
public void setId(Integer id){ this.id = id;}
}
ItemTypeEntity
@Entity(tableName = "itemTypes")
public class ItemTypeEntity extends BaseEntity {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "e_item_type_id")
private Integer id = null;
@ColumnInfo(name = "item_type_name")
private String name;
@Ignore
public ItemTypeEntity(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Pojo ItemWithType
public class ItemWithType {
@Embedded
public ItemEntity item;
@Embedded
public ItemTypeEntity itemType;
}
ItemDao
@Dao
public abstract class ItemDao {
@Transaction
@Query("SELECT * "FROM " + "items )
public abstract List<ItemWithType> getAll();
}
Это хорошо работает с другим Pojo, так как отношение устанавливается автоматически.
У меня также есть следующее предупреждение:
ch.pa.oceanspolluters.app.database.pojo.ItemWithType имеет несколько полей [e_item_type_id, item_type_name], которые не возвращаются запросом. Если они не должны быть прочитаны из результата, вы можете пометить их аннотацией @Ignore. Вы можете подавить это предупреждение, аннотируя метод с помощью @SuppressWarnings (RoomWarnings.CURSOR_MISMATCH). Столбцы, возвращаемые запросом: e_item_id, container_id, weight_kg, item_type_id. Поля в ch.pa.oceanspolluters.app.database.pojo.ItemWithType: e_item_id, container_id, weight_kg, item_type_id, e_item_type_id, item_type_name.