0

子ドメインを親ドメインに追加するのに苦労しています。クラスは次のとおりです。

  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'])

助けてくれてありがとう

ジェイソン

4

1 に答える 1

0

多分タイプミス。あなたのサンプルでは、​​次を読むことができます:

static hasMany = [
    chidlren: Children
]

次のようにする必要があります。

static hasMany = [
    children: Children
]
于 2012-09-21T03:07:34.223 に答える