У меня есть родительский класс Очередь , который имеет следующие поля:
- Имя
- Тип
- Состояние
В зависимости от типа я разложил очередь на дополнительные подклассы, каждый из которых имеет свои дополнительные поля. Например:
ProductionQueue extends Queue { startDate, endDate }
ShippingQueue extends Queue { shippingDate, shippingAgent }
...
Я создал Queue как базовый класс в Android Studio и расширяю свои подклассы из него, но код не компилируется и жалуется на пропущенные поля (поля подкласса). Вот пример:
@Entity(tableName = "queue")
public class Queue {
int id;
String name;
int type;
int status;
}
@Entity
public class ProductionQueue extends Queue {
String startDate;
String endDate
}
@Dao
public interface ProductionQueueDao extends BaseDao<ProductionQueue> {
@Query("SELECT * FROM queue WHERE id = :queueID")
LiveData<List<ProductionQueue>> findByID(Long queueID);
}
При компиляции я получаю: error: Столбцы, возвращаемые запросом, не имеют полей [startDate, endDate] в com.example.room.ProductionQueue, даже если они аннотированы как ненулевые или примитивные. Столбцы, возвращаемые запросом: [идентификатор, имя, тип, статус].
[id,name,type,status]
исходят из родительского класса, а [startDate, endDate]
являются полями подкласса.
В разных случаях в моем приложении я только перечислял имена, тип и состояние очереди и предпочел бы хранить данные очереди в одной таблице для быстрого запроса.
Я могу создавать под-таблицы для отдельных подклассов и использовать отношения, но если Room позволяет наследовать, всего этого можно легко избежать. Поддерживает ли комната такое наследование, если да, как я могу заставить его работать?
Спасибо.