室:使用将ArrayList扩展为实体的类

时间:2018-09-03 19:34:13

标签: java android inheritance arraylist android-room

我正在使用Room Persistence Library开发一个Android应用程序。我有一个extends这样的ArrayList类的课程:

@Entity(tableName = "the_table_name")
public class MyDemoClass<E extends AnotherDemoClass> extends ArrayList<E> {

  @PrimaryKey
  @NonNull
  @ColumnInfo(name = "id")
  private String id;

  @ColumnInfo(name = "title")
  private String title;

  @ColumnInfo(name = "creationdate")
  private Date creationDate;

  // Other stuff
}

我正在尝试添加此类,该类仅允许将 extended AnotherDemoClass 扩展为其中的类,作为Room的实体,但是发生了编译时错误,即:

error: cannot find symbol
        _result = new MyDemoClass<E>();
                                  ^
  symbol:   class E
  location: class MyDemoClassDao_Impl

我已经尝试了一个多小时,没有任何运气来解决此问题。

编辑: 这是我的Dao

@Dao
public interface MyDemoClassDao {

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insert(MyDemoClass<AnotherDemoClass> myDemoClass);

}

如果您的答案有任何帮助,请与我分享!

1 个答案:

答案 0 :(得分:2)

  

我想使用MyDemoClass作为播放列表。我会将歌曲添加到此播放列表,并将其保存在数据库中

MyDemoClass将是普通的Java对象(PO​​JO),并且具有与播放列表的简单属性相对应的字段,例如String,它将作为用户可以提供的名称并查看播放列表名册。 MyDemoClass 不是不是ArrayList的子类。

Song将是另一个POJO,并且具有与歌曲的简单属性相对应的字段,例如其标题为String

由于播放列表可以包含多首歌曲,并且一首歌曲可以出现在多个播放列表中,因此您需要创建一个表示该联接的实体,并将外键关系返回到播放列表和歌曲实体。

the Room documentation中简要介绍了外键关系的使用。任何在“ Room”上花费大量时间的书籍都应包含该内容。例如,这里是a preview edition of my chapter on M:N relations in Room(来自this book)。