Учитывая следующую исходную модель, кажется, что все работает нормально с Room:
interface ParentModel {
val name: String
val age: Int
}
@Entity(tableName = "parents")
open class ParentRoom(
@PrimaryKey override var name: String,
override var age: Int)
: ParentModel
Однако я не хочу использовать интерфейс, я хочу, чтобы это было real класс, я могу сделать экземпляры:
open class ParentModel(open val name: String, open val age: Int)
@Entity(tableName = "parents")
open class ParentRoom(
@PrimaryKey override var name: String,
override var age: Int)
: ParentModel(name, age)
К сожалению, Room не скомпилирует это, потому что думает, что есть два столбца с одинаковыми именами:
ParentRoom.java:7: error: Multiple fields have the same columnName: name. Field names: name, name.
public class ParentRoom extends ParentModel {
^
e: ParentRoom.java:10: error: Field has non-unique column name.
private java.lang.String name;
Причина, по которой я хочупереопределить поля, потому что это будет единственный способ аннотировать их.Это вообще возможно или я вынужден использовать интерфейсы с Room?