[英]Room: Use class that extends ArrayList as Entity
我正在使用 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
}
我正在尝试添加这个类,它只允许扩展 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);
}
如果您的回答可以以任何方式帮助,请与我分享!
我想使用 MyDemoClass 作为播放列表。 我会将歌曲添加到此播放列表并将其保存在数据库中
MyDemoClass
将是一个普通的 Java 对象 (POJO),并且具有与播放列表的简单属性相对应的字段,例如用作用户可以在播放列表名册中提供和查看的名称的String
。 MyDemoClass
不会是ArrayList
的子类。
Song
将是另一个 POJO,并且具有与歌曲的简单属性相对应的字段,例如作为其标题的String
。
由于播放列表可以包含多首歌曲,并且一首歌可以出现在多个播放列表中,因此您需要创建一个表示该连接的实体,并将外键关系返回到播放列表和歌曲实体。
Room 文档中稍微介绍了外键关系的使用。 任何在 Room 上花费大量时间的书都应该涵盖它。 例如,这是我关于 Room 中 M:N 关系章节的预览版(来自本书)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.