我是 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 有效地传递到第二个视图中,以便在提交第二个表单时可以使用它来正确保存每首歌曲?我看过这篇文章,它确实相关,但它并没有尝试将数据保存到多个视图中。
我希望这个问题有一定的意义,我感谢任何反馈......包括替代方法。