0

grails でデータベースにデータを追加しようとしていますが、次のエラーが発生します。

エラー 500: コントローラー [mgr.CollectDataEntryController] のアクション [getData] を実行すると例外が発生しました: groovy.lang.MissingMethodException: メソッドの署名がありません: static groovy.lang.MissingMethodException.addToAlumConnectionEducations() は引数の型に適用されます: (mgr.AlumConnectionEducations)値: [mgr.AlumConnectionEducations : null]

ここで、CollectDataEntryController は作業を行うコントローラーです。そのコントローラーのコード スニペットを次に示します。

saveNewAlum.addToAlumConnectionEducations(new AlumConnectionEducations(alumConnectionsId:connectionId, degree:alumConnectionEduDegree,endDate:alumConnectionEduEndDate,fieldOfStdudy:alumConnectionEduFieldOfStudy,schoolName:alumConnectionEduSchoolName,startDate:alumConnectionEduStartDate))

ドメイン AlumConnectionEducations は、別のドメイン AlumConnections との 1 対多の関係に属し、別のドメイン AlumProfile との 1 対多の関係に属しています。

私のコードでは、最初にドメイン AlumConnection を追加します。これは正常に動作しますが、次に AlumConnectionEducations を追加しようとすると、上記のエラーが発生します。誰かが私が間違っていることを知っていますか?

ありがとうジェイソン

    package mgr
    import java.util.Date;
    class AlumConnections  {
String linkedinId
String firstName
String lastName
String headline
String locationName
String locationCode
String industry
    Date dateCreated
Date lastUpdated
long version
static belongsTo = [alumProfile:AlumProfile]
static hasMany = [  
alumConnectionEducations    :   AlumConnectionEducations
 ]
static mapping = {
    cache true

    columns {       
        linkedinId      type:'text'
        firstName       type:'text'
        lastName        type:'text'
        headline        type:'text'
        locationName    type:'text'
        locationCode    type:'text'
        industry        type:'text'

    }
}
static constraints = {  
    linkedinId      (nullable:false, blank:false)
    firstName       (nullable:true)
    lastName        (nullable:true)
    headline        (nullable:true)
    locationName    (nullable:true)
    locationCode    (nullable:true)
    industry        (nullable:true)

}
  }         

ドメインを呼び出すコントローラーで:

  def saveNewAlum = ""
  saveNewAlum = new AlumProfile(firstName:linkedinFirstName, lastName:linkedinLastName, dob:newDate,industry:linkedinIndustry, oAuthToken:oAuthtoken, secretKey:secretKey)

  saveNewAlum.addToAlumConnections(new   AlumConnections(linkedinId:connectionId,firstName:connectionFName, lastName:connectionLName, headline:connectionHeadline, locationName:connectionLocationname, locationCode:connectionLocationCode,industry:connectionIndustry))

上記のコードは正常に機能し、MySQL データベースに保存されます。saveNewAlum.addToAlumConnectionEducations を作成しようとしたときにのみ、エラーが発生します

4

1 に答える 1

1

まあ、それは一日かかりましたが、私はそれを手に入れました。それで、私の仮定は正しいように見えました、それは問題を引き起こしていたのは1対多と1対多でした。これが私がそれを修正した方法です。ドメインは私が持っていた通りでした。コントローラで:最初に、メインの親を作成します:

         saveNewAlum=new AlumProfile(firstName:linkedinFirstName, lastName:linkedinLastName, dob:newDate, industry:linkedinIndustry, oAuthToken:oAuthtoken, secretKey:secretKey)

次に、子に追加するオブジェクトを作成します。

     myConnection= new AlumConnections(linkedinId:connectionId,firstName:connectionFName,lastName:connectionLName,headline:connectionHeadline,locationName:connectionLocationname, locationCode:connectionLocationCode,industry:connectionIndustry)

次に、子を親に保存します。

    saveNewAlum.addToAlumConnections(myConnection)

次に、子の子に保存するオブジェクトを作成します。

  newConnectionEdu=  new AlumConnectionEducations(
              degree:alumConnectionEduDegree,
              endDate:alumConnectionEduEndDate,
              fieldOfStudy:alumConnectionEduFieldOfStudy,
              schoolName:alumConnectionEduSchoolName,
              startDate:alumConnectionEduStartDate)

次に、最後に、子を子に追加します。

 myConnection.addToAlumConnectionEducations(newConnectionEdu)

それがあなたが子供を子供に加える方法です!

于 2011-07-22T03:11:16.297 に答える