Grails 3 @Delegate Notation mit einem Domain-Objekt

8

Unter Grails 2.4.4 hatten wir Klassen, die wir als Wrapper für Domain-Objekte verwendet haben.

Sie würden so aussehen:

%Vor%

Das hat funktioniert, aber wenn wir versuchen, unter Grails 3.0.11 zu kompilieren, bekommen wir folgendes:

Foo.groovy: 14: Kann keine abstrakte Methode in einer nicht-abstrakten Klasse haben. Die Klasse 'Foo' muss als abstrakt deklariert werden oder die Methode 'org.springframework.validation.Errors org_grails_datastore_gorm_GormValidateable__errors $ get ()' muss implementiert werden.  @ Zeile 14, Spalte 1.    Klasse Foo {    ^

Durch das Entfernen der @Delegate-Annotation wird die Kompilierung bestanden, aber Aufrufe von Methoden der zugrunde liegenden Klasse funktionieren offensichtlich nicht.

Gibt es eine Möglichkeit, dies zu umgehen oder das gleiche Verhalten zu erreichen und es unter Grails 3 kompilieren zu lassen?

    
Sean LeBlanc 06.01.2016, 16:53
quelle

2 Antworten

1

Reicht die gute alte static hasMany = [] oder static hasOne = [] nicht aus? Wrappers wären natürlich auch Domain-Klassen.

    
Kamil Węglarz 30.06.2016 08:58
quelle
0

Sie können dies umgehen, indem Sie die Wrapper-Klasse ändern, um die GORM-Merkmale zu implementieren:

%Vor%

Ich ging weiter und erstellte meine eigene Schnittstelle:

%Vor%

Ich habe Ausgabe # 856 gegen Grails-Data-Mapping abgelegt, obwohl es ein Groovy Bug .

    
timbonicus 24.01.2017 00:36
quelle

Tags und Links