首页 > 解决方案 > 我可以扩展一个简单的对象类来创建 Room 数据库对象吗?

问题描述

假设我有一个简单的对象类:

public class Test {

    public String teststring;

}

但后来我想创建另一个对象类,这一次它将是一个房间数据库类:

@Entity(tableName = "test_table_one")
public class TestChildOne extends Test {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public long test_id;

}

然后,我想创建另一个类:

@Entity(tableName = "test_table_two")
public class TestChildTwo extends Test {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public long test_id;

}

这里的问题是teststring父类的 String 没有@ColumnInfo注释。事实是,我不想@Entity在父类中设置注释,因为这两个子类将属于不同的表,如您所见。

那么,我可以在没有设置的@ColumnInfo情况下在父类中@Entity设置 a 吗?那么当我创建一个对象TestChildOne并设置它时它会起作用TestChildOne.teststring还是会引发错误?

非常感谢您!

标签: androidandroid-room

解决方案


@ColumnInfo注释即使在父类中也会起作用,因此@ColumnInfo即使类没有@Entity注释也可以编写

public class Test {
     @ColumnInfo( name = "yourColumnName" )
    public String teststring;

}

推荐阅读