помогите пожалуйста с нулевым исключением при добавлении данных с граалями - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь добавить данные в базу данных, в граалях, но получаю эту ошибку:

Ошибка 500: Выполнение действия [getData] контроллера [mgr.CollectDataEntryController] вызвало исключение: 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, который, в свою очередь, относится к связи один-ко-многим сдругой домен, alumProfile

, в своем коде я сначала добавляю домен 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, что я получаю ошибку

1 Ответ

1 голос
/ 22 июля 2011

ну, это заняло весь день, но я понял. таким образом, мое предположение, казалось, было правильным, это была проблема «один ко многим с одним ко многим». вот как я это исправил. Домены были правы, как я это сделал. в контроллере: во-первых, я создаю основного родителя:

         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)

и вот как вы добавляете ребенка к ребенку!

...