我尝试了与www.example.com中给出的代码完全相同的代码https://developer.android.com/training/data-storage/room/relationships#many-to-many。
@Entity
data class Playlist(
@PrimaryKey val playlistId: Long,
val playlistName: String
)
@Entity
data class Song(
@PrimaryKey val songId: Long,
val songName: String,
val artist: String
)
@Entity(primaryKeys = ["playlistId", "songId"])
data class PlaylistSongCrossRef(
val playlistId: Long,
val songId: Long
)
data class PlaylistWithSongs(
@Embedded val playlist: Playlist,
@Relation(
parentColumn = "playlistId",
entityColumn = "songId",
associateBy = Junction(PlaylistSongCrossRef::class, parentColumn = "playlistId", entityColumn = "songId")
)
val songs: List<Song>
)
我有更复杂的数据,但当我尝试从链接相同的代码显示
error: Not sure how to convert a Cursor to this method's return type (java.util.List<com.skybase.compose_tut.PlaylistWithSongs>).
我想知道为什么这个示例代码不工作?
1条答案
按热度按时间nhn9ugyo1#
您的问题将与
@Dao
注解接口(或抽象类)中的一个函数(Java中的方法)有关。提供的代码(歌曲、播放列表、播放列表SongCrossref和POJO PLaylistsWithSongs)均正常。在带注解的
@Dao
接口中,您需要类似以下内容:-返回类型**为
List<PlaylistWithSongs>
与项目与您的代码和以下额外的代码的数据库:-
然后输入以下活动代码:-
然后,它编译(使用Room 2.2.0库)良好,运行时得到预期的结果:-