子ドメインを親ドメインに追加するのに苦労しています。クラスは次のとおりです。
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'])
助けてくれてありがとう
ジェイソン