У меня возникли трудности с добавлением дочерних доменов к родительским. вот классы:
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'])
Спасибо за любую помощь
Джейсон