java - Room:使用将 ArrayList 扩展为实体的类
问题描述
我正在使用 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 关系一章的预览版(来自本书)。
推荐阅读
- spring-cloud-stream - Spring Cloud Stream中BindingServiceConfiguration.inputBindingLifecycle()方法有什么用?
- git - 当文件可用时,预推无此类文件
- excel - 如何从当前单元格和输入单元格中求和值
- amazon-web-services - EMR 上的 Spark 作业突然需要 30 小时(原为 5 小时)
- c++ - 将 int 分配给 int [x] 的不兼容类型
- c# - 如何使 Image.fillAmount 表现得像 unity.Slider?
- r - 如何使用 for 循环转换列
- macos - 产生 1 个错误。制作:*** [php_intl.lo] 错误 1 错误:`make' 失败
- android - 如何解压具有动态名称的包装 JSON 对象
- django - 将 Amazon s3 替换为 S3ForMe