java - Hibernate - 多对多实现

标签 java spring hibernate

我有 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/

相关文章:

java - select 子句中的 Hibernate Criteria SubSelect

java - 使用假设角色同时访问属于不同帐户的两个 dynamodb 表不起作用

java - spring-data-redis:在一个事务中,get操作会返回null

java - Spring - 匿名身份验证访问被拒绝

java - 将注释处理器集成到同一个项目中

mysql - 使用 Hibernate native 查询插入不适用于 java.util.Date

java - 使用 selenium webdriver 查找表行号

java - 我的基本 Java 服务器接受 3 个客户端而不是 2 个

java - Spring Boot 应用程序端点返回 403

java - JPQL多对多选择查询