grails - Grails “Cannot set readonly property”

标签 grails many-to-many

我有2个与多对多关系的域,并且这个关系的中间表

class Song implements Taggable {

    static belongsTo = [User]

    static hasMany = [audios: Audio, couplets: Couplet, hasSongListSong: HasSongListSong, hasSublistSong: HasSublistSong]

    String title
    Boolean isChorusRepeat = false
    Boolean deleted = false
    Date dateCreated, lastUpdated

    static constraints = {
        title blank: false, size:1..129
    }
}

class SongList {

    static belongsTo = [User]
    static hasMany = [hasAccess: HasAccess, songListHasSong: HasSongListSong, songSubList: SongSubList]

    String title
    User user
    Boolean deleted = false
    Date dateCreated, lastUpdated

    static constraints = {
        title size: 3..128, blank: false, unique: false
    }
}

带有Song和SongList id的中间表,用于存储关系
class HasSongListSong {

    static belongsTo = [SongList, Song]

    SongList songList
    Song song

    static constraints = {
    }
}

当我尝试在此表中设置数据时,我得到了这个惊喜
def addSongs() {
    def hasSong = new HasSongListSong();
    hasSong.songId = Song.load(1)
    hasSong.songListId = SongList.load(1)
}

第二个问题,如果我从前端范围的id接收到,如何更好地保存这种情况,我的意思是要向 Controller 发出带有songId 1,2,.. n集合的请求。我应该使用一些迭代器,或者有更好的方法?

最佳答案

您不设置ID,而是设置对象:

def addSongs() {
    def hasSong = new HasSongListSong();
    hasSong.song = Song.load(1)
    hasSong.songList = SongList.load(1)
}

在第二个问题中问您一个新问题,我可以尝试回答。

关于grails - Grails “Cannot set readonly property”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29613393/

相关文章:

grails - Grails-动态分配表以从中搜索

Grails 自动编译不在开发环境中

grails - executeUpdate查询不适用于Grails Spock测试

Grails 资源插件断言失败

date - Grails匹配日期

Postgresql 9.3 - array_agg 挑战

Java 数据库 |从多对多分组中检索匹配项

ruby-on-rails - 更新与 Rails 的多对多关系

python - Django/mysql中间表不插入数据

php - Doctrine setter 在多对多关系上有什么用?