使用grails添加数据时,请帮助处理null异常

使用grails添加数据时,请帮助处理null异常,grails,groovy,gorm,grails-domain-class,Grails,Groovy,Gorm,Grails Domain Class,我试图在grails中向数据库添加数据,但出现以下错误: 错误500:执行控制器[mgr.CollectDataEntryController]的操作[getData]导致异常:groovy.lang.MissingMethodException:没有方法签名:静态groovy.lang.MissingMethodException.addToAlumConnectionEducations()适用于参数类型:(mgr.AlumConnectionEducations)值:[mgr.AlumCo

我试图在grails中向数据库添加数据,但出现以下错误:

错误500:执行控制器[mgr.CollectDataEntryController]的操作[getData]导致异常:groovy.lang.MissingMethodException:没有方法签名:静态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属于一对多关系,而另一个域AlumConnections又与另一个域alumProfile属于一对多关系

到,在我的代码中,我首先添加了域AlumConnection,这很好,但是当我尝试添加AlumConnectionEducations时,我得到了上面的错误。有人知道我做错了什么吗

谢谢 杰森

在调用域的控制器中:

  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时,我才发现了错误

嗯,花了一整天的时间,但我发现了。所以,我的假设似乎是正确的,是一对多和一对多造成了问题。下面是我如何修复它的。域名是正确的方式,我有它。在控制器中: 首先,我创建主父级:

         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)
 myConnection.addToAlumConnectionEducations(newConnectionEdu)
然后,我将子项保存到父项:

    saveNewAlum.addToAlumConnections(myConnection)
然后,我创建要保存到孩子的孩子的对象:

  newConnectionEdu=  new AlumConnectionEducations(
              degree:alumConnectionEduDegree,
              endDate:alumConnectionEduEndDate,
              fieldOfStudy:alumConnectionEduFieldOfStudy,
              schoolName:alumConnectionEduSchoolName,
              startDate:alumConnectionEduStartDate)
然后,最后,我将子对象添加到子对象:

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

这就是如何将一个孩子添加到一个孩子中

你能发布你的AlumConnections代码吗?我在上面的问题中添加了它,因为我似乎无法在注释中添加它。你能添加创建
saveNewAlum
变量的代码吗?您是否验证过它确实是
AlumConnections
的实例?谢谢您的回复。我在第一篇文章中添加了saveNewAlum代码。是的,我已经验证了saveNewAlum可以正常工作,因为它可以毫无错误地保存到MySQL数据库中。也许问题在于:我有一对多的关系。为了保存它,我首先创建父对象(saveNewAlum),然后,为了添加它的各种子对象(那些属于它的对象),我这样做:saveNewAlum.addToAlumConnections(newalumconnections(…)),但问题是我需要知道如何获取一个子对象,并使用它和另一个对象(alumConnectionEducations)创建一对多。那么,我是否必须这样做:saveNewAlum.AlumConnections.addToAlumConnectionEducations(newalumconnections.Educations(…)?您也可以围绕层叠进行同样的操作。