Upgrade auf Grails 2.4.4

8

Ich erhalte immer einen Fehler beim Starten meiner Grails-Anwendung, nachdem ich von Grails 2.4.3 auf 2.4.4 aktualisiert habe. Der vollständige Fehler kann hier gelesen werden: Ссылка

%Vor%

Es zeigt Association references unmapped class: java.util.List

Es sagt nicht, welche Domain-Klasse oder irgendwelche wirklich hilfreiche Informationen. Ich habe versucht, einige Domain-Klassen zu entfernen und zu versuchen, herauszufinden, was die Ursache ist, aber es ist eine große Anwendung und ich war nicht erfolgreich.

Kann mir jemand in die richtige Richtung zeigen, um herauszufinden, wo das ausgelöst wird und wie man es beheben kann?

    
Brandon Wagner 31.10.2014, 20:31
quelle

3 Antworten

8

Herausfinden, was falsch ist

Zuerst müssen Sie herausfinden, welche Felder das Problem verursachen. Wahrscheinlich wird jedes Feld in einer Domänenklasse als List deklariert.

In meinem Fall war es einfach, sie zu finden, weil das Projekt in einem sehr frühen Stadium ist und es nicht zu viele Domains gibt.

Ich habe jedoch eine mögliche Lösung gefunden, um einzugrenzen hinunter die möglichen Täter gesetzt.

Der interessante Teil ist:

  

Was saugt ist der einzige gute Weg, um herauszufinden, wo sie sind, ist einen Haltepunkt in Zeile 436 von AbstractGrailsDomainBinder setzen und den Stand der Dinge anschauen

Behebung des Problems

Wenn Sie die unpassenden Felder finden, ist es an der Zeit, eine Problemumgehung zu implementieren.

Nehmen wir an, unser Schuldiger wäre List authors in einer Domänenklasse wie:

%Vor%

Wir müssen natürlich die Liste loswerden, also wäre die Lösung etwa so:

%Vor%

Möglicher Nebeneffekt

Ich habe bemerkt, dass der Setter explizit genannt werden muss, damit er funktioniert.

Ich bin mir ziemlich sicher, dass in der vorherigen Grails-Version der folgende Code den Setter aufrufen würde:

%Vor%

Aber es sieht so aus, als wäre es in Grails 2.4.4 wie folgt:

%Vor%     
Marcin Świerczyński 31.10.2014, 23:50
quelle
10

Sie müssen auch die Karte hasMany angeben. Es scheint, dass es nicht mehr ausreicht, einfach List<DomainClassName> listName hinzuzufügen in Ihrer Domänenklasse

Sie müssen auch hinzufügen

%Vor%

zumindest funktioniert es für mich.

    
splatterfreak 03.12.2014 12:01
quelle
-3

Versuchen Sie, die problematische List -Schnittstelle durch eine echte Klasse zu ersetzen, z. B. ArrayList

    
Grzegorz Gajos 02.11.2014 16:38
quelle

Tags und Links