【发布时间】:2013-01-03 01:17:13
【问题描述】:
我是 grails 的新手,正在尝试构建一个具有一对多关系的小型应用程序,但我被卡住了。
所以存在三个域类 Artist、Album 和 Song。意图是双重嵌套的 1->m 关系:
一个艺术家可以有很多专辑,一个专辑可以有很多歌曲。
class Artist {
List albums = new ArrayList()
static hasMany = [albums: Album]
String artistName
static mapping = {
albums cascade:"all-delete-orphan"
}
}
class Album {
String albumName
String albumDescr
static belongsTo = [artist: Artist]
List songs = new ArrayList()
static hasMany = [songs: Song]
boolean deleted
static transients = [ 'deleted' ]
static mapping = {
songs cascade:"all-delete-orphan"
}
}
class Song{
Album album
static belongsTo = [album: Album]
String songName
Integer trackNumber
boolean deleted
static transients = [ 'deleted' ]
}
我想用一系列表格来处理数据的输入。在第一个视图中,将使用任何关联的专辑创建艺术家。这种观点类似于 此处描述的视图:http://omarello.com/2010/08/grails-one-to-many-dynamic-forms/
在提交表单时,艺术家和相关专辑将被保存(如下所示)
def artist = new Artist(params)
artistGroup.save()
这是我需要帮助的部分...
下一个视图将显示使用前一个视图创建的专辑,并提示用户为每个视图添加歌曲信息。提交此表格后 歌曲将被保存。
我在想我会在闪存范围内传递保存的专辑
flash.myAlbums = artist.albums
因此它们可以显示在第二个视图中。然而,显示专辑名称只是故事的一部分,因为我们需要 Album.id 来保存每个 歌曲(并正确关联其专辑)。如何将此 ID 有效地传递到第二个视图,以便在提交第二个表单时可以使用它正确保存每首歌曲?我已经看到了这个post,它确实相关,但它并没有尝试将数据保存到多个视图中。
我希望这个问题有一定的意义,我感谢任何反馈......包括替代方法。
【问题讨论】:
标签: grails groovy nested-forms