2013-07-10 2 views
0

Почему этот код не работает нормально?Grails addTo * с результатом базы данных

def classeInstrumento = classeInstrumentoService.getClasseInstrumento("value") 

def instrumentoInstance = new Instrumento().addToClasseInstrumento(classeInstrumento) 

Я получаю сообщение об ошибке на консоли:

No signature of method: package.Instrumento.addToClasseInstrumento() is applicable for argument types: (package.ClasseInstrumento) values: [package.ClasseInstrumento : 5] 

И это структура доменов

class ClasseInstrumento { 
    static hasMany = instrumentos: Instrumento 
} 

class Instrumento { 

    ClasseInstrumento idClasseInstrumento 

    static hasMany = [ativoDefs: AtivoDef, 
         futuroDefs: FuturoDef, 
         operacaoDefs: OperacaoDef] 

    static belongsTo = [ClasseInstrumento] 
} 

Так я ожидал, что он работал, но это не

:(

Спасибо за ответы!

ответ

1

Instrumento принадлежит ClasseInstrumento.

что означает ClasseInstrumento является родителем и Instrumento является дочерним ClasseInstrumento (обозначается hasMany в ClasseInstrumento)

AddTo * используется от родителя к ребенку, что означает

"Добавьте родитель в качестве ссылки на иностранную ссылку на ребенка ", что означает

classeInstrumento.addToInstrumentos(new Instrumento())

будет работать, а не прежний подход, который вы используете.

+0

Thx dmahapatro. –

0
instrumentoInstance = new Instrumento().addToClasseInstrumento(classeInstrumento) 

classeInstrumento = classeInstrumentoService.getClasseInstrumento("value") 

classeInstrumento .addToInstrumentos(instrumentoInstance) 

это возможно только или вы должны изменить, что вы принадлежите к нему навсегда, если вы пропустили требования к домену.