2016-04-24 7 views
1

In meiner App habe ich eine Grails Domain-Klasse Student. Ich habe auch ein paar Klassen in src.java ursprünglich in Plain Java geschrieben.Grails Domain-Klasse-Methode von Java-Source-Fehler: kann Symbol nicht finden

In einem diesen Klassen in irgendeiner Methode ich so eine Sammlung von Studenten zu bekommen versuchen:

this.students = new ArrayList<Student>(Student.findAll()); 

Grails Paket importiert wird, intellij beschwert sich nicht, aber bekomme foolwing ich Fehler beim zu versuchen, kompilieren.

Ich habe auch verschiedene Methoden versucht, auf Student, aber alle geben mir den gleichen Fehler - kann Symbol nicht finden.

+2

Die Methode 'findAll()' wird von Grails dynamisch allen Domain-Klassen hinzugefügt. Das Aufrufen der Methode beruht also auf Groovys dynamischer Verteilung, um die Methode zu finden und dann auszuführen. Da die Methode nicht in der Klasse selbst existiert, können Sie sie nicht direkt aus Java aufrufen. –

+0

Emmanuel, danke für den Kommentar! Gibt es einen Weg zur Problemumgehung? –

+0

Schreiben Sie diese Klassen in groovy statt Java –

Antwort

3

Als Grails docs Zustand: Sie können auch Grails Domain-Klassen in Java
Sie verwenden Weitere Informationen finden Sie in diesem mailing list
schreiben org.codehaus.groovy.runtime.InvokerHelper von Java
müssen Art Beispielcode:

import my.package.User 
import org.codehaus.groovy.runtime.InvokerHelper; 

List allInstances = (List)InvokerHelper.invokeMethod(User.class, "list", null)); 

User one=(User)InvokerHelper.invokeMethod(User.class, "get", id); 

mayb e this post kann auch helfen.
Aber ich würde der Idee zustimmen, die Klassen in Groovy zu schreiben.

+1

Danke Mikelis! Das habe ich getan, und es hat funktioniert! –

+0

Ehrfürchtig. Immer cool es hilft! –

Verwandte Themen