grails 中播放列表和歌曲的结构

问题描述

我正在尝试在 Grails 中创建一个包含播放列表的应用,其中每个播放列表都有歌曲,并且歌曲可以映射到许多不同的播放列表。

这是我的域类:

class Playlist {
    String name
    String description
    long id

    static hasMany = [songs: Song]

}

class Song {
    String name
    String artist
    String album
    long id

    static belongsTo = [playlist: Playlist]

}

我使用以下命令自动生成控制器和服务:

grails generate-all Playlist
# and 
grails generate-all Song

如果我想删除一首歌曲或编辑一首歌曲并将其反映在适当的播放列表中,那么设计此内容的正确方法是什么?

每次更新、删除添加歌曲时,我是否都进入 SongController.groovy 并更新播放列表?

或者我是否进入 PlaylistController.groovy 并在每次删除、更新或添加歌曲时设置新歌曲?

现在我想我在每个更新、删除和创建生成方法SongController.groovy 中执行此逻辑。只需检查它所属的相应播放列表,然后添加删除或更新该播放列表。这是设计这项服务的好方法吗?

示例:

SongController.groovy中:

@Transactional
def delete(Long id){
    if (id == null){
        response.status = 404
    }
    Song song = Song.get(id)
    Playlist playlist = song.playlist
    playlist.removeFromSongs(song)
    songService.delete(id)
    response.status = 200

}

因此,当一首歌曲被删除时,我们也会将其从其父播放列表中删除。这是沿着正确的设计/思考方式吗?

非常感谢您的帮助,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...