如何在Android中使用Room存储对象数组?

如何在Android中使用Room存储对象数组?,android,arrays,android-room,Android,Arrays,Android Room,我想在我的应用程序中缓存歌曲列表,歌曲列表结构如下: @Entity public class Songlist { String _id; String desc; List<SongDesc> songWithComment; ..... public static class SongDesc { String comment; Song song; } } @Entity pul

我想在我的应用程序中缓存歌曲列表,歌曲列表结构如下:

 @Entity
 public class Songlist {
      String _id;
      String desc;
      List<SongDesc> songWithComment;
      .....

    public static class SongDesc {
      String comment;
      Song song;
    }
}
 @Entity
 pulbic class Song {
      String name;
      String type;
      ......
 }
@实体
公共类歌曲列表{
字符串_id;
字符串描述;
列出有评论的歌曲;
.....
公共静态类SongDesc{
字符串注释;
宋松;
}
}
@实体
搏动类歌曲{
字符串名;
字符串类型;
......
}

操作sqlite3的库是,但它不允许在表中引用对象。有没有办法在Android中使用Room缓存歌曲列表?

如果要将某种类型的ArrayList保存到数据库中,您应该使用
TypeConverter
将ArrayList从数据库引擎转换为更简单的可识别类型,如
字符串

见此:
而且

如果您想存储一些自定义对象,可以使用@Embedded annotation,如下面的示例所示:

class Address {
public String street;
public String state;
public String city;

@ColumnInfo(name = "post_code")
public int postCode; 
}


@Entity
class User {
@PrimaryKey
public int id;

public String firstName;

@Embedded
public Address address;
} 

您需要单独的
@Entity
类对数据库结构进行建模(例如,
SonglistEntity
songtentity
),其中歌曲与父项之间有
@ForeignKey
关系。感谢回复!一首歌可能包含无数个歌曲列表,而一个歌曲列表包含有限的歌曲,也许我应该在
歌曲列表中使用
@ForeignKey
?但我不知道如何处理这个列表…您列出的链接明确指出,这是第二个选项。