我有 3 个表,播放列表、歌曲和 Playlist_Song。 Playlist_Song 有一个 playlist_id 外键和一个 user_id 外键。我需要获取特定播放列表中的歌曲列表,因此我想对 Playlist_Song 进行数据库调用,以返回带有 playlist_id 的所有条目。
然后,我使用歌曲 ID 对歌曲表进行数据库调用,以检索这些歌曲。我觉得这效率很低,应该有更好的方法,但我真的不知道该怎么做。有什么建议吗?
public List<Song> getSongsInPlaylist(final int playlistId) {
final List<PlaylistSong> playlistSongs = playlistSongDao.getPlaylistSong(playlistId);
if (!playlistSongs.isEmpty()) {
final List<Song> songs = new ArrayList<>();
for (PlaylistSong existingPlaylistSong : playlistSongs) {
songs.add(songDao.findById(existingPlaylistSong.getSongId()).get());
}
return songs;
}
最佳答案
作为歌曲 ID 列表传递到 SongDao 并在一个查询中作为列表检索。 SongDao.findByIdIn(列出歌曲Id)。
关于java - Hibernate - 多对多实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56823566/