Grails добавляет несколько дочерних элементов в родительский домен

У меня возникли трудности с добавлением дочерних доменов к родительским. вот классы:

  class parent{
String firstName
String lastName
String dobYear
String dobMonth
String dobDay
Date dateCreated
Date lastUpdated
long version

static hasMany = [
    chidlren: Children

]

static mapping = {
    cache true
    id generator: 'assigned'

    columns {
        firstName           type:'text'
        lastName            type:'text'
        dobYear             type:'text'
        dobMonth            type:'text'
        dobDay              type:'text'
    }


}
static constraints = {
    firstName           (nullable:true)
    lastName            (nullable:true)     
    dobYear             (nullable:true)
    dobMonth            (nullable:true)
    dobDay              (nullable:true)     
    id              (nullable:false)

}

}

дети:

   class Children{

String skillId
String skillName    
String skillProficiency
String skillYears       
Date dateCreated
Date lastUpdated
long version

static belongsTo = [parent:Parent]
static mapping = {
    cache true
    columns {       
        skillId      type:'text'
        skillName    type:'text'
        skillProficiency type:'text'            
        skillYears   type:'text'
    }
}
static constraints = {

     skillId                    (nullable:true)
     skillName                  (nullable:true)
     skillProficiency           (nullable:true) 
     skillYears                 (nullable:true) 
}

}

Затем я создаю экземпляр родительского класса следующим образом: //my xml def feed= new XmlSlurper().parseText(linkedinResponse);

     def newParent= new Parent(
        firstName:"${feed.'first-name'}",
        lastName:"${feed.'last-name'}",
        dobYear :"${feed.'date-of-birth'.'year'}",
        dobMonth:"${feed.'date-of-birth'.'month'}",
        dobDay  :"${feed.'date-of-birth'.'day'}"        

       )
      .id="${feed.id}".toString()

В моем xml-канале у меня есть несколько дочерних узлов, поэтому я хочу создать несколько узлов домена и добавить их к родительскому. Материал xml работает нормально:

  feed.skills.skill.each{ mySkill ->
def newChild = new Children(
              skillId:  mySkill.'id',
              skillName:    mySkill.'name',
              skillProficiency: mySkill.'proficiency',
              skillYears    :   mySkill.'years'
              )
          newParent.addToChildren(newChild )
      }

Когда я пытаюсь добавить ребенка, я получаю сообщение об ошибке (подпись метода: com.myapp.Children.call() применима для типов аргументов: () значений: [])

Другое дополнительное поле, чем оно отличается от примеров, которые я нахожу на сайте Grails, например:

 def parent = new Parent(name:'Dad')
 parent.addToChildren(new Child(name:'son'))
 parent.addToChildren([name:'daughter'])

Спасибо за любую помощь

Джейсон


person jason    schedule 20.09.2012    source источник
comment
Вы сохраняете родителя после добавления детей?   -  person lucke84    schedule 21.09.2012
comment
нет, сначала я не спасаю родителя. прямо сейчас я хочу просто создать классы домена, заполнить их и сохранить в базе данных в другой точке приложения.   -  person jason    schedule 22.09.2012


Ответы (1)


Может опечатка. В вашем образце вы можете прочитать:

static hasMany = [
    chidlren: Children
]

Должно быть:

static hasMany = [
    children: Children
]
person AA.    schedule 21.09.2012
comment
да просто опечатка. все работает, за исключением случаев, когда я пытаюсь добавить ребенка к родителю. Спасибо хоть - person jason; 21.09.2012
comment
Нет метода addChildren, то есть addToChidlren, addTo-›Дети, а не add-›Дети. Вы видите это? - person AA.; 21.09.2012