Я следовал документации, предоставленной в android руководствах разработчика и в статье Medium .
Я пытаюсь вернуть список воспроизведения песен, но хочу список сущностей, а не только идентификаторы. Следуя приведенным выше ссылкам, у меня есть это.
Мои сущности:
@Entity
data class MediaEntity(
@PrimaryKey val identifier: String,
val imageUrl: String,
val title: String,
val description: String,
val media: String,
val duration: Double,
val progress: Int,
val listenedToCompletion: Boolean
)
@Entity
data class PlaylistEntity(
@PrimaryKey val playlistId: String,
val playlistName: String,
val playlistDescription: String = "",
val currentPosition: Int = 0
)
@Entity(primaryKeys = ["playlistId", "identifier"])
data class PlaylistMediaLinkEntity(
val playlistId: String,
val identifier: String
)
Мой DAO для таблицы ссылок выглядит следующим образом:
@Dao
interface PlaylistMediaLinkDao {
@Transaction
@Query("SELECT * FROM PLAYLISTENTITY")
fun getPlaylistWithMediaItems(): List<MediaInPlaylist>
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insert(playlistMediaLinkEntity: PlaylistMediaLinkEntity)
}
А затем мои медиа в объект списка воспроизведения:
class MediaInPlaylist() {
@Embedded
lateinit var playlist: PlaylistEntity
@Relation(
parentColumn = "playlistId",
entity = MediaEntity::class,
entityColumn = "identifier",
associateBy = Junction(
value = PlaylistMediaLinkEntity::class,
parentColumn = "playlistId",
entityColumn = "identifier"
)
)
lateinit var mediaEntities: List<MediaEntity>
}
Я могу подтвердить, что мой PlaylistMediaLinkEntity заполнен парами идентификаторов playlist-media, но при вызове getAllPlaylistsWithMediaItems
объект MediaInPlaylist
возвращается с данными Playlist
, но список из mediaEntries
пусто.
Я что-то пропустил или куда я иду не так? То, что я сделал, соответствует большинству примеров в Интернете.