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?
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
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:
Wir müssen natürlich die Liste loswerden, also wäre die Lösung etwa so:
%Vor%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% 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.
Versuchen Sie, die problematische List
-Schnittstelle durch eine echte Klasse zu ersetzen, z. B. ArrayList
Tags und Links grails grails-2.4