3

以下の問題を更新します

ネストされた一連のドメインオブジェクトをGrailsに保存しようとしていますが、この構文で問題が発生しています。

例として、次のネストされた1対多の関係があるとします。

アーティスト->アルバム->曲

私は最初にアーティストを作成します

Artist artist = new Artist(parameters)
artist.save()

新しく保存したアーティストと一緒に、一連のアルバムとそれに関連する曲を保存したいと思います。

このようなことがうまくいくと思いましたが、結果はまちまちです。

Album album = new Album()
artist.addToAlbum(album)
Song song = new Song()
album.addToSong(song)

私が見ているのは新しいアルバムドメインオブジェクトですが、新しい曲はありません。簡単なprintlnを試して、「アルバム」のステータスを確認しましたが、nullが返されます。明らかに、既存のアーティストにアルバムを追加することはできますが、曲を追加できるようにアルバム自体を取り戻すことはできません。誰かがGORM/Grailsに複数のネストされたオブジェクトを保存する方法に光を当てることができますか?

ありがとうございました

実際のドメイン:ネストされたDataLoad-> DataSeries-> ReportedResult

DataLoad

class DataLoad {

static hasMany = [dataSeries: DataSeries]
String fileLocation
Date dateCreated
Date lastUpdated
CROSource croSource

List dataSeries = new ArrayList()

static mapping = {

     dataSeries cascade:"all-delete-orphan"

}}

DataSeries

class DataSeries {

//parent and child relationships one-to-many
static belongsTo = [dataLoad: DataLoad]
static hasMany = [reportedResult: ReportedResult]
//this functions as an experiment_id for data which needs to be viewed together
String randomString
Date dateCreated
Date lastUpdated

List reportedResult = new ArrayList()
static mapping = {
     reportedResult cascade:"all-delete-orphan"
}}

ReportedResult

class ReportedResult implements Serializable {


//parent and child relationships one-to-many
static belongsTo = [dataSeries: DataSeries]
static hasMany = [resultDefData: ResultDefData]
List resultDefData = new ArrayList()
//has one-to-one relationship   -may need to make this a one sided relationship does not always need a Curve
Curve curve

AssayGroup assayGroup
AssayDefinition assayDefinition
AssayProtocol assayProtocol
ResultStatistic resultStatistic
ResultType resultType

//actual result fields
Float resultValue
String resultValueUnit
String resultModifier
Boolean resultObtained
Date resultTime
Integer compoundID
Float resultStatValue
String resultComment
Float resultRawValue

String linkToExternalFile
String studyNumber


Date dateCreated
Date lastUpdated


static mapping = {
resultDefData cascade:"all-delete-orphan"
}}

アップデート

したがって、次のようなことを試してみると、うまくいきます。私のドメインの1つで何か他のものでなければなりません。私は自分の問題を修正しようとしますが、参考までにこれはうまくいくはずです。

Artist artist = new Artist(artistName: "MyName")
artist.save()

    Album album = new Album(albumName: "myAlbum")
    artist.addToAlbums(album)

  Song song = new Song(songName: "just a song")
    album.addToSongs(song)
4

0 に答える 0